logback 적용 팁(크기별, 일자별, 패키지별 로그파일분리)
Posted 2015. 2. 27. 11:07logging system에서 최근 많이 적용하는 것으로 logback 인듯 합니다.
장단점, 활용방법은 관련 홈페이지 참고하면 될듯합니다.
logback 홈페이지 : http://logback.qos.ch/documentation.html
설정파일에서 많이 적용하는 팁만 간단히 정리합니다.
1. 일자별로 로그파일 적용하기
<!-- daily rollover -->
<fileNamePattern>/logs/log_file_name.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
2. 일자별 로그파일구성외에도 로그파일의 크기가 너무 커지는 것을 방지하기 위한 옵션
<!-- or whenever the file size reaches 50MB -->
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
3. 일자별 백업파일의 보관기간을 얼마로 정할것인가에 대한 옵션
4. 로그파일 경로 등에 대해서 변수로 지정하기
<property name="LOG_PATH_NAME" value="${LOG_DIR}/stdout.log" />
5. 특정 패키지 부분만 별도의 로그파일로 빼고자 하는 경우
<appender-ref ref="LOG_FILE_2" />
</logger>
위의 옵션을 적용한 전체 모습은 아래와 같습니다.
<configuration scan="true" scanPeriod="30 seconds" debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<property name="LOG_DIR" value="/home/project/logs" />
<property name="LOG_PATH_NAME" value="${LOG_DIR}/stdout.log" />
<property name="GW_LOG_PATH_NAME" value="${LOG_DIR}/stdout_gw.log" />
<appender name="LOG_FILE_1" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH_NAME}</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_PATH_NAME}.%d{yyyy-MM-dd}.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 50MB -->
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-6level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<appender name="LOG_FILE_2" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${GW_LOG_PATH_NAME}</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${GW_LOG_PATH_NAME}.%d{yyyy-MM-dd}.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 50MB -->
<maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-6level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.test.groupware" level="DEBUG">
<appender-ref ref="LOG_FILE_2" />
</logger>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
<appender-ref ref="LOG_FILE_1" />
</root>
</configuration>
비슷한 방법으로 로그레벨별로 파일을 분리하고자 할때도 응용하면 될듯합니다.
'개발노트' 카테고리의 다른 글
Bitnami redmine from 2.2 to 3.3 업그레이드 (0) | 2016.09.11 |
---|---|
Invalid LOC header(bad signature) 오류 (0) | 2015.10.19 |
Model1 방식에서 인코딩처리(GET, POST) (0) | 2015.01.20 |
SimpleDateFormat 사용하면서 발생한 황당한 버그 (0) | 2014.12.30 |
java application windows service로 등록하기(nssm) (0) | 2014.12.26 |
- Filed under : 개발노트