티스토리 뷰

Spring

[ Spring ] Logging

Jorten 2020. 6. 2. 11:27

Dependency

Spring Boot 프레임워크 에서는 Common Logging Facade 를 기본으로 사용하고 있고,
SLF4j Facade 사용을 위해서는 Common Logging을 exclude 해주고, SLF4j를 추가해주는 작업을 해주어야한다.

하지만 spring 5부터는, Spring-JCL 모듈이 추가되어, 별도로 exclude를 해줄 필요 없이 SLF4j를 사용할 수 있게 되었다.

그래서 Spring Boot starter web 의존성만 추가하면 SLF4j와 Logback을 사용할 수 있게 되었다.
( starter web에 Spring-JCL 의존성이 있다. )

implementation 'org.springframework.boot:spring-boot-starter-web'

Logg 출력

간단하게 lombok의 @Slf4j 를 선언하여 logger를 만들어, logback으로 로그를 출력할 수 있다.

@Component
@Slf4j
public class DemoApplicationRunner implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.debug("logback debug test");
        log.info("logback info test");
    }
}

logback custom 설정

logback 일반 설정은 application.properties나 yml 파일에서 설정 가능하고,
Custome 한 설정은 logback.xml 과 logback-spring.xml 파일에서 설정할 수 있다.
logback.xml 과 logback-spring.xml은 서로 로딩되는 시점이 다른데 상세한 부분은 나중에 또 설명하도록 하겠다.
일단 logback-spring.xml 파일을 resources 폴더 아래에 만들어두고, 아래 코드를 추가하자.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
    <logger name="com.package.example" level="INFO"/>
</configuration>

logger name 을 지정해서, 특정 로거의 로그 레벨을 선언해주면 된다.

로그 레벨을 INFO 로 설정을 하면, info 레벨의 로거만 콘솔에 출력이 된다.

2020-06-02 13:44:16.081  INFO 45559 --- [           main] c.p.example.DemoApplicationRunner  : logback info test
run : class com.package.example.DemoApplicationRunner

참조

https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto-logging

댓글
댓글쓰기 폼
공지사항
Total
2,134
Today
2
Yesterday
72
링크
«   2020/07   »
      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  
글 보관함