개요
이 튜토리얼에서는 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
'Spring' 카테고리의 다른 글
Spring Data JPA - From 절 Subquery (InlineView)사용하기 - 2 (3) | 2024.11.07 |
---|---|
Spring Data JPA - From 절 Subquery (InlineView)사용하기 (5) | 2024.11.05 |
Spring Boot 서버 포트 변경하기 (1) | 2023.10.03 |