본문 바로가기
카테고리 없음

logback 적용 팁(크기별, 일자별, 패키지별 로그파일분리)

by 신군. 2018. 9. 24.
반응형

logback 적용 팁(크기별, 일자별, 패키지별 로그파일분리)



logging system에서 최근 많이 적용하는 것으로 logback 인듯 합니다.

장단점, 활용방법은 관련 홈페이지 참고하면 될듯합니다.

 

logback 홈페이지 : http://logback.qos.ch/documentation.html

 

설정파일에서 많이 적용하는 팁만 간단히 정리합니다.

 

1. 일자별로 로그파일 적용하기

 

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
   <!-- daily rollover -->
   <fileNamePattern>/logs/log_file_name.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>

 

2. 일자별 로그파일구성외에도 로그파일의 크기가 너무 커지는 것을 방지하기 위한 옵션

 

<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    <!-- or whenever the file size reaches 50MB -->
    <maxFileSize>50MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>

 

3. 일자별 백업파일의 보관기간을 얼마로 정할것인가에 대한 옵션

 

<maxHistory>30</maxHistory>

 

4. 로그파일 경로 등에 대해서 변수로 지정하기

 

<property name="LOG_DIR" value="/home/project/logs" />
<property name="LOG_PATH_NAME" value="${LOG_DIR}/stdout.log" />

 

5. 특정 패키지 부분만 별도의 로그파일로 빼고자 하는 경우

 

<logger name="com.test.groupware" level="DEBUG">
  <appender-ref ref="LOG_FILE_2" />
</logger>

 

위의 옵션을 적용한 전체 모습은 아래와 같습니다.

 

<?xml version="1.0" encoding="UTF-8"?>
<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>

 

 비슷한 방법으로 로그레벨별로 파일을 분리하고자 할때도 응용하면 될듯합니다.


반응형