스프링 부트(핵심 원리와 활용)

Ch07. 액츄에이터 - 로거

webmaster 2023. 3. 29. 01:51
728x90

loggers 엔드포인트를 사용하면 로깅과 관련된 정보를 확인하고, 또 실시간으로 변경할 수도 있다. 코드를 통해서 알아보자.

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";
  }

}
  • 여러 레벨을 로그를 남기는 단순한 컨트롤러이다.

application.yml 설정

logging:
  level:
    hello.controller: debug
  • hello.controller 패키지와 그 하위는 debug 레벨을 출력하도록 했다. 이제 앞서 만든 LogController 클래스도 debug 레벨의 영향을 받는다
  • 로그를 별도로 설정하지 않으면 스프링 부트는 기본으로 INFO 를 사용한다. 실행 결과를 보면 ROOT configuredLevel INFO 인 것을 확인할 수 있다. 따라서 그 하위도 모두 INFO 레벨이 적용된다.
  • 앞서 우리는 hello.controller DEBUG 로 설정했다. 그래서 해당 부분에서 configuredLevel DEBUG 로 설정된 것을 확인할 수 있다. 그리고 그 하위도 DEBUG 레벨이 적용된다.

더 자세히 조회하기

다음과 같은 패턴을 사용해서 특정 로거 이름을 기준으로 조회할 수 있다. http://localhost:8080/actuator/loggers/{로거이름}

실시간 로그 레벨 변경

개발 서버는 보통 DEBUG 로그를 사용하지만, 운영 서버는 보통 요청이 아주 많다. 따라서 로그도 너무 많이 남기 때문에 DEBUG 로그까지 모두 출력하게 되면 성능이나 디스크에 영향을 주게 된다. 그래서 운영 서버는 중요하다고 판단되는 INFO 로그 레벨을 사용한다.
그런데 서비스 운영 중에 문제가 있어서 급하게 DEBUG TRACE 로그를 남겨서 확인해야 확인하고 싶다면 어떻게 해야 할까?? 일반적으로는 로깅 설정을 변경하고, 서버를 다시 시작해야 한다.

loggers 엔드포인트를 사용하면 애플리케이션을 다시 시작하지 않고, 실시간으로 로그 레벨을 변경할 수 있다.

POST 요청

  • 요청에 성공하면 204 응답이 온다.(별도의 응답 메시지는 없다.)
  • GET으로 요청해서 확인해보면 configuredLevel TRACE 로 변경된 것을 확인할 수 있다.

 

728x90