현재 스케쥴러를 이용해 외부 API 서버와 통신하는 기능을 개발 중에 있는데, 해당 스케쥴러가 서버에서 정상적으로 돌고 있는지를 확인하기 위해 Log를 찍었었다.
그러나 작성했던 로그들은 로그에 검출되지 않았고, 나는 현재 구현 중인 코드에 이상이 있다고 생각했다.
그러나 프로젝트에 설정된 출력 로그 레벨에 비해 내가 작성했던 로그 레벨이 낮아 출력이 되지 않았던 것이고, 이 기회를 통해서 로그 레벨은 무엇인지에 대해서 공부해보고자 한다.
아래는 내가 작성했던 코드이다.
public class ModmProcService {
private final static Logger logger = Log.getLogger(ModmProcService.class);
public void execute() {
try{
logger.info("지금 스케쥴이 돌아가는 중입니다!" + LocalDateTime.now().toString());
}catch(Exception e){
logger.error(e.getMessage());
}
}
}
로그 레벨은 로그 메시지의 중요도
를 나타내는 수준을 의미한다.
로그 레벨은 로깅 시스템에서 사용되며, 로그 메시지의 중요도에 따라 해당 메시지를 기록할지 결정하는데 사용된다.
그렇다면 로그 메시지의 중요도, 즉 로그 레벨은 어떤 것들이 있을까?
아래는 slf4j
라이브러리 기준 코드이다.
추상화(인터페이스)
역할을 하는 라이브러리이다. /**
* Log a message at the TRACE level.
*
* @param msg the message string to be logged
* @since 1.4
*/
public void trace(String msg);
개발 단계
에서 사용되며, 배포된 애플리케이션에서는 거의 사용되지 않는다. /**
* Log a message at the DEBUG level.
*
* @param msg the message string to be logged
*/
public void debug(String msg);
디버깅 과정
에서 자주 사용되며, 배포된 상태에서는 제한적으로 활성화된다. /**
* Log a message at the INFO level.
*
* @param msg the message string to be logged
*/
public void info(String msg);
운영 시에도
활성화되는 로깅 레벨로, 중요한 비즈니스 이벤트 또는 흐름을 기록할 때 사용된다. /**
* Log a message at the WARN level.
*
* @param msg the message string to be logged
*/
public void warn(String msg);
경고 상황
을 모니터링할 때 유용하며, 잠재적인 문제를 미리 인지할 수 있도록 합니다. /**
* Log a message at the ERROR level.
*
* @param msg the message string to be logged
*/
public void error(String msg);
에러 상황
을 기록하여 개발자나 운영팀이 빠르게 문제를 해결할 수 있도록 한다.