spring-boot - logback profile 설정하기, 설정전략 (logback-spring.xml)

logback

지난포스트 에서 logback의 기본적인 설정에 관하여 다루었다.
이번 포스팅에서는 logback-spring.xmlprofile로 설정을 나누는 방법, 그리고 그 전략에 대해 다룬다.

logback-spring.xml

spring에서 logback은 설정파일을 아래와같은 순서로 찾는다.

  1. logback.groovy
  2. logback-test.xml
  3. logback.xml
  4. default

spring-boot의 경우 조금 다르게 logback-spring.xml이라는 이름으로 설정한다.
logback.xml 으로 설정하면 spring-boot 가 설정되기전에 로그백설정을 완료한다. 따라서 spring-boot에서 사용하는 properties 나 profile같은 설정값을 사용할 수 없게된다.

profile에 따라 로그설정

기본적인 logback.xml에 관한 설정은 logback 기본설정 포스팅에서 다루고 profile 설정에 관해 알아보자.

필자는 크게 console에 로깅, file에 로깅, 그리고 logstash로 로그를 전송하는 3가지 설정을 하였다.
그리고 profile별로 아래와같이 나누었다.

phase에 따라서 proflies를 나누는 경우에는 아래와같이 설정 할 수 있다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<root>
<springProfile name="local">
<appender-ref ref="CONSOLE"/>
</springProfile>

<springProfile name="alpha">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE-ASYNC"/>
</springProfile>

<springProfile name="release">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE-ASYNC"/>
<appender-ref ref="LOGSTASH"/>
</springProfile>

</root>

profile에 따른 로깅전략

또다른 전략으로는 로깅방법에 따라서 profile에 추가해주는 방법이 있는데, appender 갯수가 늘어남에 따라 조합은 다양해지기때문에 필자는 이와같은 방법을 선호한다.

-DSpring.profiles.active=console-logging,file-logging,logstash-logging 으로 넣어준다면 3개의 appender가 모두 작동할것이다.
그리고 local환경과같이 console로깅만 필요한 경우 -DSpring.profiles.active=console-logging면 충분하다.

1
2
3
4
5
6
7
8
9
10
11
<root>
<springProfile name="console-logging">
<appender-ref ref="CONSOLE"/>
</springProfile>
<springProfile name="file-logging">
<appender-ref ref="FILE-ASYNC"/>
</springProfile>
<springProfile name="logstash-logging">
<appender-ref ref="LOGSTASH"/>
</springProfile>
</root>

-DSpring.profiles.active=console-logging,file-logging,logstash-logging 와같은 긴 설정이 불편하고 위처럼 phase에따라서 설정하게 만들고 싶다면 application.yml 을 수정하여 아래처럼 할수도 있다. 아래 예제는 위 profile에 따라 로그설정 에서 다룬 예제와 동일하게 동작한다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
spring:
profiles:
include: console-logging
---
spring:
profiles: alpha
spring:
profiles:
include: console-logging,file-logging
---
spring:
profiles: release
spring:
profiles:
include: console-logging,file-logging,logstash-logging

Comments