개요

이 튜토리얼에서는 Spring Boot 애플리케이션의 로깅 수준을 런타임에 변경하는 방법을 살펴보겠습니다. 많은 것들과 마찬가지로 Spring Boot에는 우리를 위해 구성하는 기본 제공 로깅 기능이 있습니다 . 실행 중인 애플리케이션의 로깅 수준을 조정하는 방법을 살펴보겠습니다.

이를 위해 세 가지 방법을 살펴보겠습니다. Spring Boot Actuator 로거 엔드포인트를 사용하는 방법, Logback 의 자동 스캔 기능을 사용하는 방법 , 마지막으로 Spring Boot Admin 도구를 사용하는 방법입니다.

이 번역본에서는 Spring Boot Actuator를 통해 로깅 레벨을 변경하는 방법만 안내합니다.

Spring boot Actuator

/ loggers Actuator 엔드포인트를 사용하여 로깅 레벨을 표시하고 변경하는 것으로 시작하겠습니다 . / loggers 엔드포인트는 actuator/loggers 에서 사용할 수 있으며 경로의 일부로 이름을 추가하여 특정 로거에 액세스할 수 있습니다.

예를 들어, URL http://localhost:8080/actuator/loggers/root 를 사용하여 루트 로거에 접근할 수 있습니다.

설정

Spring Boot Actuator를 사용하여 애플리케이션을 설정하는 것부터 시작해 보겠습니다.

먼저, pom.xml 파일 에 Spring Boot Actuator Maven 종속성을 추가해야 합니다 .

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>3.1.5</version>
</dependency>

gradle을 통해 종속성 추가

implementation 'org.springframework.boot:spring-boot-starter-actuator:3.1.5'

대부분의 엔드포인트는 기본적으로 비활성화되어 있으므로 application.properties 파일 에서 / loggers 엔드포인트 도 활성화해야 합니다 .

management.endpoints.web.exposure.include=loggers
management.endpoint.loggers.enabled=true

마지막으로, 실험의 효과를 볼 수 있도록 일련의 로깅 명령문을 포함하는 컨트롤러를 만들어 보겠습니다.

@RestController
@RequestMapping("/log")
public class LoggingController {
    private Log log = LogFactory.getLog(LoggingController.class);

    @GetMapping
    public String log() {
        log.trace("This is a TRACE level message");
        log.debug("This is a DEBUG level message");
        log.info("This is an INFO level message");
        log.warn("This is a WARN level message");
        log.error("This is an ERROR level message");
        return "See the log for details";
    }
}

/ loggersEndpoint 사용

애플리케이션을 시작하고 로그 API에 접근해 보겠습니다.

curl http://localhost:8080/log

그럼, 로그를 확인해 볼까요? 로그에는 세 개의 로깅 문장이 있습니다.

2019-09-02 09:51:53.498  INFO 12208 --- [nio-8080-exec-1] c.b.s.b.m.logging.LoggingController      : This is an INFO level message
2019-09-02 09:51:53.498  WARN 12208 --- [nio-8080-exec-1] c.b.s.b.m.logging.LoggingController      : This is a WARN level message
2019-09-02 09:51:53.498 ERROR 12208 --- [nio-8080-exec-1] c.b.s.b.m.logging.LoggingController      : This is an ERROR level message

이제 / loggers Actuator 엔드포인트를 호출하여 com.baeldung.spring.boot.management.logging 패키지 의 로깅 수준을 확인해 보겠습니다.

curl http://localhost:8080/actuator/loggers/com.baeldung.spring.boot.management.logging
  {"configuredLevel":null,"effectiveLevel":"INFO"}

로깅 수준을 변경하려면 / loggers 엔드포인트 에 POST 요청을 발행할 수 있습니다.

curl -i -X POST -H 'Content-Type: application/json' -d '{"configuredLevel": "TRACE"}'
  http://localhost:8080/actuator/loggers/com.baeldung.spring.boot.management.logging
  HTTP/1.1 204
  Date: Mon, 02 Sep 2019 13:56:52 GMT

로깅 수준을 다시 확인하면 TRACE 로 설정되어 있어야 합니다.

curl http://localhost:8080/actuator/loggers/com.baeldung.spring.boot.management.logging
  {"configuredLevel":"TRACE","effectiveLevel":"TRACE"}

마지막으로, 로그 API를 다시 실행하여 변경 사항이 실제로 어떻게 적용되는지 확인할 수 있습니다.

curl http://localhost:8080/log

이제 로그를 다시 확인해 보겠습니다.

2019-09-02 09:59:20.283 TRACE 12208 --- [io-8080-exec-10] c.b.s.b.m.logging.LoggingController      : This is a TRACE level message
2019-09-02 09:59:20.283 DEBUG 12208 --- [io-8080-exec-10] c.b.s.b.m.logging.LoggingController      : This is a DEBUG level message
2019-09-02 09:59:20.283  INFO 12208 --- [io-8080-exec-10] c.b.s.b.m.logging.LoggingController      : This is an INFO level message
2019-09-02 09:59:20.283  WARN 12208 --- [io-8080-exec-10] c.b.s.b.m.logging.LoggingController      : This is a WARN level message
2019-09-02 09:59:20.283 ERROR 12208 --- [io-8080-exec-10] c.b.s.b.m.logging.LoggingController      : This is an ERROR level message

Reference

https://www.baeldung.com/spring-boot-changing-log-level-at-runtime

+ Recent posts