spring-boot - logback 설정 - logback.xml

spring boot logging

스프링부트는 모든 내부 로깅에 Commons Logging를 사용한다, 그러나 근원적인 로그 구현체를 열어볼 수 있다. 기본 설정들은 Java Util Logging, Log4j 그리고 Logback을 제공한다. 각각 콘솔로 출력되고 파일로 출력된다. (10MB 크기가 되면 파일을 새로 생성)

기본적으로, ‘Starter POMs’를 사용한다면, Logback을 로깅에 사용할 것이다. 유연한 Logback은 Java Util Logging, Commons Logging, Log4j 혹은 SLF4J 를 사용하는 의존적 라이브러리들을 의존적인 라이브러리들도 문제없이 동작하는 것을 보장한다.

팁: 자바에서 사용가능한 로깅 프레임워크들은 대부분 지원한다. 목록만 보고서 당혹러워할 이유는 없다. 기본적으로 로깅 의존성을 변경할 필요는 없을 것이며 스프링부트는 기본적으로 잘 되어 있어있다.

logback

의존성

spring-boot-starter-logging 를 포함하고있는 starter를 사용하는것이 가장 쉽다. 웹 에플리케이션을 구성한다면 spring-boot-starter-web 만 있으면 된다.

설정

더 상세한 설정을 위해서는 각 구현체가 요구하는 설정양식을 사용하여야 한다.
기본적으로 스프링부트는 설정파일을 기본 경로에서 찾으며 Logback의 경우 classpath:logback.xml 이다.
spring

logback.xml

  • 설정파일 최상단에는 configuration가 자리잡고있다.
  • 로그를 출력하는 방법에따라 appender를 설정해준다.
    • console 창에 추가하는 ConsoleAppender
    • 로그를 file에 남기기위한 FileAppender
    • elk stack을 활용한다면 logstash 와 관련된 appender
  • root블럭은 모든 defautl설정이라고 보면된다
    • <root level = "INFO"> 라고되어있다면 INFO이상 등급에대해 로그를 남긴다
  • 이외에 추가 설정으로 특정 logger에서만 로그를 남기게 할 수 있다

console logging 예시

1
2
3
4
5
6
7
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender"></appender>
<root level = "INFO">
<appender-ref ref = "STDOUT"/>
</root>
</configuration>

file logging 예시

1
2
3
4
5
6
7
8
9
<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
<appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
<File>/var/tmp/mylog.log</File>
</appender>
<root level = "INFO">
<appender-ref ref = "FILE"/>
</root>
</configuration>

Comments