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