오늘 Spring Boot 에 Logback 설정을 하다가 profile 에 따라 분리의 필요성을 느껴 찾아보고 적용하였습니다.
우선 logback.xml 파일은 spring extention 을 사용할 수 있게 logback-spring.xml 로 이름을 짓습니다.
그리고 2가지 경우로 나누어 설정해 보았습니다.
첫번째로 미리 appender 를 선언하고 호출하여 쓰는 경우.
<property name="LOG_PATH" value=""/>
<property name="LOG_FILE_NAME" value=""/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%-5level %d{HH:mm:ss.SSS} [%thread %F:%L] %method - %msg%n
</pattern>
</encoder>
</appender>
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
<encoder>
<pattern>%-5level %d{HH:mm:ss.SSS} [%thread %F:%L] %method - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>60</maxHistory>
</rollingPolicy>
</appender>
<springProfile name="dev | stage">
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ROLLING_FILE"/>
</root>
</springProfile>
이렇게 쓸경우 springProfile 에 따라 appender 가 중복되지 않고 호출만 하여 사용하면 되어 편리합니다.
하지만 로그 파일의 위치가 권한이 필요한 곳이라면 미리 appender 를 선언하고 해당 설정을 읽을때 파일에 접근, 생성하기 때문에 따로 권한을 줘야합니다. (제 경우에는 앱 실행당시 바로 access denied 가 떴었습니다.)
두번째로 springProfile 별로 선언하고 쓰는 경우.
<springProfile name="dev | stage">
<property name="LOG_PATH" value=""/>
<property name="LOG_FILE_NAME" value=""/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%-5level %d{HH:mm:ss.SSS} [%thread %F:%L] %method - %msg%n
</pattern>
</encoder>
</appender>
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
<encoder>
<pattern>%-5level %d{HH:mm:ss.SSS} [%thread %F:%L] %method - %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/${LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>60</maxHistory>
</rollingPolicy>
</appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ROLLING_FILE"/>
</root>
</springProfile>
이렇게 쓸경우 중복은 되지만 환경에 따라 세부적인 설정을 변경하기도 좋고 파일 생성이 필요없는 환경에서는 쓸데없이 파일을 만드는 appender 에 접근하지 않아 파일을 만들지 않아서 좋았습니다.
'Programming > Spring' 카테고리의 다른 글
profiles 를 활용하여 설정 값 변경하기. (0) | 2018.08.13 |
---|