-
Logback - 특정 이름별로 로그 분리 하기Spring/Spring Boot 2019. 6. 26. 10:37반응형
Logback 이 로그 파일을 쌓는 방식을 기본적으로는 패키지 명이나 로그 레벨 단위로 나누거나 하는 경우가 많다.
이번에 특이하다고 하긴 그렇지만 특정 이름별로 로그를 분리 할 이유가 생겼다. 여러가지 구글링을 해봤지만 앞서 말한 방식들로 대두분 이야기하고있었다. 나에게는 당장 그렇게 필요하지 않는 부분이여서 구글링능력 부족(?)을 한탄하며 그냥 기억나는대로 세팅을 했다.
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="true"> <appender name="Connection" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>log/connection-%d{yyyy-MM-dd}.%i.txt.zip</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS}-%green(%-5level)-%logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="Config" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>log/config-%d{yyyy-MM-dd}.%i.txt.zip</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS}-%green(%-5level)-%logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --> <fileNamePattern>log/apilog-%d{yyyy-MM-dd}.%i.txt.zip</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- or whenever the file size reaches 100MB --> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder> <pattern>%d{HH:mm:ss.SSS}-%green(%-5level)-%logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%d{HH:mm:ss.SSS}-%green(%-5level)-%logger{36} - %msg%n</Pattern> </layout> </appender> <!-- Loggers --> <logger name="org.springframework.core"> <level value="info"/> </logger> <logger name="org.springframework.beans"> <level value="info"/> </logger> <logger name="org.springframework.context"> <level value="info"/> </logger> <logger name="org.springframework.web"> <level value="info"/> </logger> <logger name="com.example.web"> <level value="debug"/> </logger> <!-- SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다. --> <logger name="jdbc.sqlonly" additivity="false"> <appender-ref ref="ROLLING"/> <appender-ref ref="STDOUT"/> <level value="OFF"/> </logger> <!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. --> <logger name="jdbc.sqltiming" additivity="false"> <appender-ref ref="ROLLING"/> <appender-ref ref="STDOUT"/> <level value="DEBUG"/> </logger> <logger name="jdbc.resultset" additivity="false"> <appender-ref ref="ROLLING"/> <appender-ref ref="STDOUT"/> <level value="OFF"/> </logger> <logger name="jdbc.resultsettable" additivity="false"> <appender-ref ref="ROLLING"/> <appender-ref ref="STDOUT"/> <level value="DEBUG"/> </logger> <logger name="jdbc.connection" additivity="false"> <appender-ref ref="ROLLING"/> <level value="OFF"/> </logger> <logger name="jdbc.audit" additivity="false"> <appender-ref ref="ROLLING"/> <appender-ref ref="STDOUT"/> <level value="OFF"/> </logger> <logger name="Connection" level="INFO" additivity="false"> <appender-ref ref="Connection" /> </logger> <logger name="Config" level="INFO" additivity="false"> <appender-ref ref="Config" /> </logger> <root level="info"> <appender-ref ref="ROLLING"/> <appender-ref ref="STDOUT"/> </root> </configuration>
별건 아니지만 appender 를 목적에 맞게 추가해주고 사용할 이름에 대해서 명시해준뒤 logger 만 설정해주면 소스상에서 getLogger 시 설정한 이름으로 로그 객체를 가져와 로그를 기록하면된다. 각각의 appender 를 만들어 주었기 때문에 로그별로 특별히 다르게 하기도 쉽다. 단지 xml 길어지는걸 되게 싫어 하는 스타일이라 마음에 들진 않는다. 그리고 더 좋은 방법이 분명 있을거 같은데 당분간은 이렇게 쓸거 같다.
당분간 쓸거 같기 때문에 블로그에 저장목적으로 남겨둘까 한다. 나중에 이거 어떻게 했드라 하고 잘잊어먹는 나를 위하여!
반응형'Spring > Spring Boot' 카테고리의 다른 글
Spring boot Database 다중 연결 ( feat.Jooq ) (1) 2019.10.28 Spring boot vs Spring Framework (1) 2019.08.07 Spring Cloud (0) 2019.03.25 [설정] Spring boot 2 Logback 설정 (0) 2019.01.30 [설정] Spring boot 2 Yml 설정하기 (0) 2019.01.28