티스토리 뷰

 

logback.qos.ch/manual/appenders.html

 

Chapter 4: Appenders

Chapter 4: Appenders 和訳 (Japanese translation) There is so much to tell about the Western country in that day that it is hard to know where to start. One thing sets off a hundred others. The problem is to decide which one to tell first. —JOHN STEINBE

logback.qos.ch

날짜별로 파일을 보관하고, 동시에 각 로그 파일의 크기를 제한할 수 있다.

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>50MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    <maxHistory>7</maxHistory>
    <totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
  • maxFileSize - 분할 용량 (KB, MB, GB) 
  • maxHistory - 보관할 최대 파일 수를 제어하여 이전 파일을 삭제한다. 롤오버 지정에 따라 maxHistory 기간이 정해진다.
    예) 롤오버를 월간으로 지정하고 maxHistory를 7로 하면 7개월 단위
    예) 롤오버를 일간으로 지정하고 maxHistory를 7로 하면 7일 단위
  • totalSizeCap - 전체 파일 크기를 제어하며, 전체 크기 제한을 초과하면 가장 오래된 파일을 삭제한다. totalSizeCap을 사용하기 위해서는 maxHistory가 필수 속성이다. maxHistory와 totalSizeCap의 우선순위는 maxHistory가 우선된다.

 

logback-local.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration>
<configuration scan="true" scanPeriod="30 seconds">

    <!-- log file path -->
    <property name="LOG_PATH" value="/svc/reference/logs"/>
    <!-- log file name -->
    <property name="LOG_FILE_NAME" value="reference-service"/>
    <!-- log pattern -->
    <property name="LOG_PATTERN" value="%d{[yyyy.MM.dd HH:mm:ss]} [%-35.35c{1}:%line] %-5p %m%n"/>
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>${LOG_PATTERN}</Pattern>
        </layout>
    </appender>

    <logger name="org.springframework" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

    <logger name="jdbc" level="OFF"/>
    <logger name="jdbc.audit" level="OFF"/>
    <logger name="jdbc.connection" level="OFF"/>
    <logger name="jdbc.sqlonly" level="OFF"/>
    <logger name="jdbc.sqltiming" level="DEBUG"/>
    <logger name="jdbc.resultset" level="OFF"/>

    <logger name="jdbc.resultsettable" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

 

logback-dev.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration>
<configuration scan="true" scanPeriod="30 seconds">

    <!-- log file path -->
    <property name="LOG_PATH" value="/svc/reference/logs"/>
    <!-- log file name -->
    <property name="LOG_FILE_NAME" value="reference-service"/>
    <!-- log pattern -->
    <property name="LOG_PATTERN" value="%d{[yyyy.MM.dd HH:mm:ss]} [%-35.35c{1}:%line] %-5p %m%n"/>
    
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>${LOG_PATTERN}</Pattern>
        </layout>
    </appender>
    
    <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>7</maxHistory>
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
    </appender>
    
    <appender name="ROLLING_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/error/${LOG_FILE_NAME}_error.log</file>
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/error/${LOG_FILE_NAME}_error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <logger name="org.springframework" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="ROLLING" />
        <!-- <appender-ref ref="ROLLING_ERROR" /> -->
    </logger>

    <logger name="jdbc" level="OFF"/>
    <logger name="jdbc.audit" level="OFF"/>
    <logger name="jdbc.connection" level="OFF"/>
    <logger name="jdbc.sqlonly" level="OFF"/>
    <logger name="jdbc.sqltiming" level="DEBUG"/>
    <logger name="jdbc.resultset" level="OFF"/>

    <logger name="jdbc.resultsettable" level="INFO" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="ROLLING" />
        <!-- <appender-ref ref="ROLLING_ERROR" /> -->
    </logger>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="ROLLING" />
        <!-- <appender-ref ref="ROLLING_ERROR" /> -->
    </root>

</configuration>

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/05   »
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
글 보관함