-
로거 - loggers스프링/스프링부트 2023. 10. 1. 14:19
로깅과 관련된 정보를 확인하고 로깅 레벨을 실시간으로 변경할 수도 있다.
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"; } }
일단 접근하면 log를 출력하는 컨트롤러를 만든다.
log는 default가 info까지여서 info, warn, error의 로그만 출력될 것이다.
application.yml
logging: level: hello.controller: debug
로깅 레벨을 debug로 설정해서 debug, info, warn, error가 나오도록 설정해준다. 이건 스프링의 기능이고 액츄에이터와는 무관한 설정 기능이다.
이후에 localhost:8080/log로 접근해서 컨트롤러를 호출한 다음 localhost:8080/loggers로 들어가보면
나머지는 다 default 값인 info인데, hello.controller와 그 경로에 있는 LogController는 debug로 설정되어 있는 것을 확인할 수 있다.
localhost:8080/actuator/loggers/hello.controller로 들어가면 hello.controller의 정보만 확인할 수 있다.
이러한 것들을 설명하는 이유는 아래의 실시간 로그 레벨 변경을 알아보기 위함이다.
실시간 로그 레벨 변경
개발 서버는 보통 debug나 trace 로그를 사용하지만 운영 서버는 요청이 너무 많기 때문에 로그를 너무 많이 남기면 성능에 문제가 생긴다. 그래서 운영 서버는 일반적으로 매우 중요한 INFO 레벨 정도까지만으로 로그 레벨을 설정한다.
만약에 서비스 운영중에 문제가 생겨서 급하게 debug나 trace 로그를 확인해야할 경우가 있을 수도 있다.
이 때, loggers 엔드포인트를 사용하면 애플리케이션을 다시 사용하지 않고 실시간으로 로그 레벨을 설정할 수 있다.
postman에서 원하는 컨트롤러까지 포함된 엔드포인트를 입력한 다음 Body에 "configuredLevel": "TRACE"를 입력하고 POST 요청을 보내면 trace 레벨로 변경된다.
이후 GET으로 조회하면 TRACE 레벨로 변경된 것을 확인할 수 있다. 웹으로 loggers 엔드포인트에 들어가도 hello.controller와 그 패키지에 있는 LogController까지 TRACE 레벨로 설정되어 있다.
물론 메모리를 변경하는 것은 아니고 재시작하면 다시 설정해놓은 DEBUG 레벨로 된다.
아주 급한 상황일 때 실시간 로그 레벨 변경을 활용하면 애플리케이션 재시작 없이 로그 레벨을 변경할 수 있다.
'스프링 > 스프링부트' 카테고리의 다른 글
마이크로미터란? (0) 2023.10.02 액츄에이터와 보안 (0) 2023.10.01 애플리케이션 정보 - info (0) 2023.10.01 헬스 정보 - health (0) 2023.10.01 액츄에이터와 액츄에이터 엔드포인트 (0) 2023.10.01