오늘 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




profiles 를 활용하여 설정 값 변경하기.



스프링 개발을 하다보면 환경, 앱을 돌리고자 하는 목적에 따라 설정 값을 환경에 맞춰 변경해줘야 하는 경우가 생깁니다.

이럴 때 일일이 바꿀 필요 없이 편하게 설정 값을 변경하는 방법이 있습니다.


profiles 를 활용하는 방법입니다.





우선 환경에 따라 다른 설정 값을 가진 설정 파일을 여러개 만듭니다.

(저는 yml 을 사용했지만 properties를 사용하셔도 됩니다. )





그 후 위와 같이 Edit Configurations... 를 클릭합니다.





그 후 위 사진처럼 VM options 입력란-Dspring.profiles.active=적용하고자하는 환경 을 입력하고 앱을 run 시키면 설정한 환경의 설정 값을 가지고 있는 설정파일을 바탕으로 돌고 있는 것을 확인할 수 있습니다.





또는 터미널에서 실행시키고 싶다면 shell script 혹은 직접 위와같이 직접 쳐서 환경 설정 파일을 바꾸어 실행할 수 있습니다.




'Programming > Spring' 카테고리의 다른 글

Profile 에 따른 Logback 분리  (0) 2020.03.04

+ Recent posts