티스토리 뷰

필자는 일단 이 글을 쓰면서도 이 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 문은 여기를 참조하도록 하자. 

 

취향에 따라 선택해서 사용하길 바란다. 

 

끝! 

댓글
최근에 올라온 글
최근에 달린 댓글
«   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