웹 개발

Spring boot logging with application.properties

노루아부지 2022. 3. 30. 23:43
반응형

Spring boot에서는 application.properties 또는 application.yml을 통해 logging을 할 수 있습니다.

 

 

1. Spring boot 기본 로깅

먼저, 다음과 같이 java 코드에 log를 넣습니다.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
  private final Logger log = LoggerFactory.getLogger(this.getClass());

  @RequestMapping("/")
  public String home() {
    log.debug("debug message");
    log.info("info message");
    log.warn("warn message");
    log.error("error message");

    return "";
  }
}

 

Spring boot를 시작한 후, 웹 브라우저에서 URL에 접속(ex. http://localhost:8080/) 한 후, Console에서 log message를 확인하면 다음과 같이 표시됩니다.

 

2022-03-30 22:53:41.884  INFO 19712 --- [nio-8080-exec-1] com.example.demo.TestController          : info message
2022-03-30 22:53:41.885  WARN 19712 --- [nio-8080-exec-1] com.example.demo.TestController          : warn message
2022-03-30 22:53:41.885 ERROR 19712 --- [nio-8080-exec-1] com.example.demo.TestController          : error message

 

자세히 보면 log 중 debug가 없다는 것을 알 수 있는데, 이는 default logging level이 info이기 때문입니다.

 

 

 

2. Spring boot logging level

application.properties에서 spring boot, hibernate, thymeleaf 등의 로그 수준을 정의할 수 있습니다. logging 수준을 설정하려면 다음과 같이 logging.level로 시작하는 속성을 추가하면 됩니다.

 

logging.level.org.springframework.web=ERROR
logging.level.com.howtodoinjava=DEBUG

 

또한 root logger는 logging.level.root를 사용하여 구성할 수 있습니다.

 

logging.level.root=DEBUG

위와 같이 application.properties에 코드를 추가하면 다음과 같이 console에 debug가 추가된 것을 확인할 수 있습니다.

2022-03-30 23:02:24.763 DEBUG 14136 --- [nio-8080-exec-4] com.example.demo.TestController          : debug message
2022-03-30 23:02:24.763  INFO 14136 --- [nio-8080-exec-4] com.example.demo.TestController          : info message
2022-03-30 23:02:24.763  WARN 14136 --- [nio-8080-exec-4] com.example.demo.TestController          : warn message
2022-03-30 23:02:24.763 ERROR 14136 --- [nio-8080-exec-4] com.example.demo.TestController          : error message

 


3. Spring boot logging patterns

logging pattern을 변경하려면 logging.pattern.console 및 logging.pattern.file 속성을 사용할 수 있는데 logging.pattern.console은 console에 표시되는 옵션이고, logging.pattern.file은 파일에 쓸 때 사용되는 옵션입니다.

logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n

 

다시 로그를 확인해 보면 다음과 같이 표시됩니다.

2022-03-30 23:14:20 - debug message
2022-03-30 23:14:20 - info message
2022-03-30 23:14:20 - warn message
2022-03-30 23:14:20 - error message

 

 

4. Log output to file

로그를 파일에 출력하기 위해서는 다음과 같이 logging.file.name 또는 logging.file.path를 사용하면 됩니다.

logging.file.name=e:/spring.log

 

 

5. log에 Color 표시

Console에서 color를 지원하는 경우 spring.output.ansi.enable property를 통해 color를 표시할 수 있습니다.

지원되는 옵션은 다음과 같습니다.

  • ALWAYS
  • NEVER
  • DETECT

 

Color 표시를 설정하면 log level에 따라 다음과 같이 표시됩니다.

  • FATAL, ERROR - Red
  • WARN - Yellow
  • INFO, DEBUG, TRACE - Green

 

728x90
반응형
loading