참고용 이전 발행글:
2025.05.14 - [Backend/Spring(활용)] - Spring Boot Actuator - 프로덕션 환경 준비 : 모니터링 시각화를 위한 첫 단계
2025.05.15 - [Backend/Spring(활용)] - Spring Boot Actuator - Spring Boot 애플리케이션 상태 점검, Health Check
1. 운영 환경에서 로그 레벨 조정의 필요성
운영 중인 시스템에서 오류가 발생했을 때, 가장 먼저 확인해야 할 대상은 로그다. 하지만 보통 로그 레벨을 INFO 수준으로 설정해두는 것이 일반적이므로, 상세한 정보가 필요한 경우에는 부족한 경우가 많다. 이러한 상황에서 애플리케이션을 재시작하지 않고, 로그 레벨을 실시간으로 조정할 수 있다면 매우 유용하다.
Spring Boot Actuator는 이를 위한 기능을 /actuator/loggers 엔드포인트를 통해 제공한다.
2. LogController를 통한 테스트 로그 생성
로그 레벨 변경 기능을 실습하기 위해, 아래와 같은 테스트용 컨트롤러를 정의하였다
@Slf4j
@RestController
public class LogController {
@GetMapping("/log")
public String log() {
log.trace("trace log");
log.debug("debug log");
log.info("info log");
log.warn("warn log");
log.error("error log");
return "ok";
}
}
이 컨트롤러는 TRACE부터 ERROR까지 모든 로그 레벨의 메시지를 출력하도록 구성되어 있다. 기본적으로는 INFO 수준 이하만 출력되기 때문에, 그 이상은 설정을 통해 조정해야 한다.
3. /actuator/loggers 엔드포인트 구조
애플리케이션이 실행된 후, 아래와 같이 loggers 엔드포인트에 접근하면 전체 로거 목록과 설정된 레벨 정보를 확인할 수 있다.
GET http://localhost:8080/actuator/loggers
응답 예시
- configuredLevel: 개발자가 명시적으로 설정한 값
- effectiveLevel: 실제 적용된 최종 로그 레벨
또한, 특정 로거만 조회하고 싶다면 다음과 같이 요청할 수 있다.
GET /actuator/loggers/hello.controller
4. 운영 중 로그 레벨 실시간 변경
운영 중 문제가 발생했을 때는 로그 레벨을 일시적으로 TRACE나 DEBUG로 올리는 것이 도움이 된다. 아래는 TRACE로 변경하는 예다.
POST http://localhost:8080/actuator/loggers/hello.controller
Content-Type: application/json
{
"configuredLevel": "TRACE"
}
응답은 204 No Content이며, 설정이 성공적으로 반영되었다는 의미다.
이후 다시 로그를 확인하면 다음과 같이 TRACE 로그까지 포함된 결과를 확인할 수 있다
5. 마무리 및 실무 팁
Spring Boot Actuator의 loggers 엔드포인트는 운영 환경에서 로그 레벨을 유연하게 제어할 수 있는 핵심 도구다. 다음은 실무에서의 주요 활용 팁이다
- 평소에는 INFO 수준으로 설정하여 로그 과다 출력 방지
- 이슈 발생 시, 해당 클래스나 패키지 로그 레벨을 DEBUG 또는 TRACE로 조정
- 문제 해결 후 다시 INFO 수준으로 복구
요약
기능 | 설명 |
/actuator/loggers | 전체 로거의 로그 레벨 확인 |
/actuator/loggers/{name} | 특정 로거에 대한 정보 조회 |
POST /actuator/loggers/{name} | 실시간 로그 레벨 조정 |
운영 팁 | 장애 대응 시 일시적 로그 레벨 조정 후 복구 |
운영 환경에서 애플리케이션의 안정성과 가시성을 동시에 확보하기 위해, loggers 엔드포인트는 선택이 아닌 필수다.