Spring Boot 로깅(Logging)

코드 작성

로깅(Logging)은 Commons Logging, Log4j, Slf4j, Logback 등 다양한 사용할 수 있다.

Main.java

package sample.springboot;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
@EnableConfigurationProperties
public class Main {

    private static final Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        try (ConfigurableApplicationContext ctx = SpringApplication.run(Main.class, args)) {
            logger.error("error log");
            logger.warn("warn log");
            logger.info("info log");
            logger.debug("debug log");
            logger.trace("trace log");
        }
    }
}

실행 결과

2015-04-29 17:31:25.023 ERROR 8872 --- [           main] sample.springboot.Main                   : error log
2015-04-29 17:31:25.023  WARN 8872 --- [           main] sample.springboot.Main                   : warn log
2015-04-29 17:31:25.023  INFO 8872 --- [           main] sample.springboot.Main                   : info log
  • 기본적으로 INFO 레벨 이상만 출력된다.
  • 형식은 날짜 오류 레베 PID — [스레드 명] 로거(logger) 이름 : 로그 메시지.

파일 출력

기본적으로 표준 출력만 로그가 출력되지 않지만 로그 파일을 지정하면 파일도 출력되게 된다.
로그 파일은 10MB 씩 회전된다.

파일 이름 지정

$ java -jar build/libs/spring-boot-sample.jar --logging.file=sample.log

$ dir /b *.log
sample.log
  • logging.file에서 출력 파일의 이름을 지정할 수 있다.
  • 편의상 명령 라인 인수로 지정하고 있지만, 속성 파일 등에서도 지정할 수 있다.
  • 파일의 대상 디렉터리가 존재하지 않으면 자동으로 만들어 진다.

폴더 지정

$ java -jar build/libs/spring-boot-sample.jar --logging.path=logs

$ dir /b logs
spring.log
  • logging.path에 로그 파일의 대상을 지정할 수 있다.
  • 로그 파일의 이름은 spring.log가 된다.
  • 디렉터리가 존재하지 않으면 자동으로 만들어 진다.

로거(logger)마다 로그 레벨을 지정

$ java -jar build/libs/spring-boot-sample.jar --logging.level.sample.springboot.Main=TRACE

2015-04-29 18:14:17.969 ERROR 8288 --- [           main] sample.springboot.Main                   : error log
2015-04-29 18:14:17.970  WARN 8288 --- [           main] sample.springboot.Main                   : warn log
2015-04-29 18:14:17.970  INFO 8288 --- [           main] sample.springboot.Main                   : info log
2015-04-29 18:14:17.970 DEBUG 8288 --- [           main] sample.springboot.Main                   : debug log
2015-04-29 18:14:17.970 TRACE 8288 --- [           main] sample.springboot.Main                   : trace log
  • logging.level.[로거]=[로그 수준]에 로거에 대한 로그 수준을 지정할 수 있다.
  • 로거 이름이 FQCN이되도록하고 있다면, –logging.level.sample.springboot=DEBUG과 같이 패키지 단위로 지정 가능하다.



최종 수정 : 2017-12-17