일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- mac os git error
- java 버전 변경
- java 11
- LeetCode
- java 여러개 버전
- ssl프로토콜확인
- parse
- java 1.8 11
- AWS CLI
- statement.executequery() cannot issue statements that do not produce result sets.
- tls프로토콜확인
- No tests found for given includes
- xcrun: error: invalid active developer path
- springboottest
- springboot
- JUnit
- Medium
- 스프링부트테스트
- log error
- OpenFeign
- easy
- mysql executequery error
- java
- ssl이란?
- xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
- Java 1.8
- aws
- error
- java version
- yum install java
- Today
- Total
쩨이엠 개발 블로그
[ log4j2 ] RollingFileAppender 설정 본문
Log4j2에서 제일 많이 쓰는건 아무래도 RollingFile로 하루 혹은 시간마다 넘어갈 수 있게 만드는 설정이다
열심히 찾은 김에 정리한다
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '2.3.4.RELEASE'
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
}
group 'com.test.demo'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
configurations {
compile.exclude module: 'spring-boot-starter-logging'
}
dependencies {
...
//log
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
}
spring boot에서 log4j2를 쓰려면 spring-boot-starter-logging 모듈을 제외시켜야 에러가 나지 않는다
application.yml
...
logging:
config: classpath:log4j2/log4j2-${spring.profiles.active}.xml
...
application.yml에는 classpath로 적용해도 되고 아니면 직접 yml에 적어도 상관은 없다
log4j2-local.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" packages="org.apache.logging.log4j.core,io.sentry.log4j2">
<Properties>
<Property name="FILE_LOG_PATTERN">%d{yyyy-MM-dd_HH:mm:ss.SSS} %level [%thread] [%logger:%line] ::: %msg%n</Property>
</Properties>
<Appenders>
<RollingFile name="LogToFile" fileName="logs/application.log"
filePattern="logs/application.log.%d{yyyy-MM-dd-hh-mm}">
<PatternLayout pattern="${sys:FILE_LOG_PATTERN}" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true" />
</Policies>
<DefaultRolloverStrategy>
<Delete basePath="logs" maxDepth="1">
<IfAccumulatedFileCount exceeds="3"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.springframework.web" level="info"/>
<Logger name="org.springframework.security" level="info"/>
<logger name="org.springframework.data.r2dbc" level="info"/>
<Logger name="com.skp.iot" level="info"/>
<Root level="info">
<AppenderRef ref="LogToFile"/>
</Root>
</Loggers>
</Configuration>
RollingFile
- name : 밑의 AppenderRef의 ref에 쓰일 이름
- fileName : 저장되는 위치와 로그파일 이름
- filePattern : Rolling시 저장될 위치와 로그파일 이름
- yyyy-MM-dd : 일마다
- yyyy-MM-dd-hh : 시간마다
- yyyy-MM-dd-hh-mm : 분마다
- Policies : 정책. 이 경우는 시간베이스로 interval(1분)마다 로그파일이 생성된다
- DefaultRolloverStrategy : 시간베이스가 아닌 경우는 이 요소의 max값이 먹히나 시간베이스인경우 먹히지 않았다
해서 찾아보니 Delete 정책을 넣어줘야한다고 함
- Delete maxDepth : 지울 Depth. 파일만 지울 땐 1을 넣어준다
- IfAccumulateFileCount exceeds : 이 값을 넘을 시 파일이 제거된다 예시의 경우(exceeds="3") 3번째 로그파일이 쌓일 때 1번째 로그파일이 지워진다
그리고 돌려보면 로그파일이 생성되고 있는것을 확인 할 수 있다
'개발 > ETC' 카테고리의 다른 글
[ gradle ] gradle lombok cannot find symbol (0) | 2021.01.18 |
---|---|
Kafka 설치 및 실행 (0) | 2021.01.07 |
[ log4j ] log4j-slf4j-impl cannot be present with log4j-to-slf4j (0) | 2020.12.23 |
[ gradle ] Directory '/Users/IdeaProjects/openapi/build/generated-snippets' specified for property '$1' does not exist. (0) | 2020.12.07 |
[ CentOS ] java version 변경 (0) | 2020.12.02 |