티스토리 뷰
필자는 일단 이 글을 쓰면서도 이 include를 사용하여 가독성을 높이는게 더 나은 방법일까? 라는 의문을 계속 가지고 있다. 답은 어느정도 정해져있다. 내가 관리를 할때 파일을 여러개로 쪼개서 가독성을 높이는것이 좋으면 쪼개는거고 아니면 하나의 파일에 다 때려박아도 무관하다. spring의 application-context를 관리하는것과 비슷한 맥락이라고 보면 된다. 하나의 파일에 다 넣을수도 있지만 종류별로 분리함으로써 더 높은 효과가 예상된다면 그리 하면 된다.
어떻게 하는지 알아보자.
logback-console-appender.xml
<?xml version="1.0" encoding="UTF-8"?>
<included>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{HH:mm:ss.SSS}][%-5level][%logger.%method:line%line] - %msg%n</pattern>
<charset>utf8</charset>
</encoder>
</appender>
</included>
logback-file-appender.xml
<?xml version="1.0" encoding="UTF-8"?>
<included>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>[%d{HH:mm:ss.SSS}][%-5level][%logger.%method:line%line] - %msg%n</pattern>
</encoder>
<file>${LOG_FILE_NAME}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE_NAME}.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>60</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>
</included>
기존의 logback-spring.xml (logback.xml) 파일 안에 들어가있던 appender 들을 다 별도로 분리를 했다. 그리고 이 파일들은 <included> 라는 태그로 감싸져 있다. 즉 분리를 시킬 내용들은 <included> 라는 태그를 감싸서 xml파일로 생성을 해주면 된다.
logback-default.xml
<?xml version="1.0" encoding="UTF-8"?>
<included>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<property name="LOG_FILE_NAME" value="C:/sampleproject/sample.log"/>
<logger name="org.springframework.boot" level="WARN"/>
<logger name="com.netflix.discovery" level="OFF" />
</included>
appender 뿐만 아니라 전체적인 설정들에 대해서도 하나 따로 분리를 해봤다. 공통으로 쓰일 property 라던지 logger 같은것들도 따로 분리를 해서 관리를 할 수 있다. 단순히 분리를 한 것이다. 그 이상의 그 이하의 의미는 없다.
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="logback-default.xml"/>
<if condition='"${spring.profiles.active}".equals("local")'>
<then>
<include resource="logback-console-appender.xml" />
<logger name="jdbc" level="OFF"/>
<logger name="jdbc.sqltiming" level="DEBUG"/>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</then>
<else>
<include resource="logback-file-appender.xml" />
<logger name="jdbc" level="OFF"/>
<logger name="jdbc.sqltiming" level="OFF"/>
<root level="ERROR">
<appender-ref ref="FILE" />
</root>
</else>
</if>
</configuration>
위에서 분리한 기능들을 main log 설정파일인 logback-spring.xml (logback.xml) 에서 사용을 하고 있다. <include resource="분리한 파일명"/> 으로 include가 가능하다. 훨씬 설정이 간결해지고 깔끔한 느낌이다. (비록 파일의 개수는 늘기는 했지만..) 여기 설정에 나오는 if else 문은 여기를 참조하도록 하자.
취향에 따라 선택해서 사용하길 바란다.
끝!
'Framework > Logging' 카테고리의 다른 글
log masking 하기 (with springboot + logback) (0) | 2021.08.20 |
---|---|
Logback 출력 로그 색상 변경하기 (with clr) (0) | 2021.01.20 |
log4j에서 slf4j + logback 으로 전환하기 (0) | 2020.08.07 |
Logback 이란? 설정방법 및 사용방법 (0) | 2020.07.14 |
Logback 오류 해결 - NoSuchMethodError: ch.qos.logback.classic.LoggerContext.removeObject(Ljava/lang/String;)V (0) | 2020.06.26 |