Sky Archive

Java

[Java] Log4j Level 설정(로그 올바른 사용법)

서울시장 2021. 7. 1. 13:59

프로그램 개발 시 로그 레벨을 생각하지 않고 DEBUG만으로 로그를 출력하는 경우가 많다.

로그 출력 시 올바른 사용법으로 출력하는 것이 좋다.

 

먼저 Log4j 각 단계에 대해 알아보자.

log4j의 최근 버전에 의하면 높은 등급에서 낮은 등급으로의 6개의 로그 레벨을 가지고 있다.

 

로그레벨 순서

TRACE > DEBUG > INFO > WARN > ERROR > FATAL

 

TRACE DEBUG보다 더 세분화 된 정보를 지정
DEBUG 프로그램 디버깅하기 위한 정보를 지정
INFO 상태변경과 같은 정보성 메세지 지정
WARN 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메세지 지정
ERROR 요청을 처리 도중 문제가 발생한 경우
FATAL 프로그램을 중단 할 수 있는 심각한 오류, 작동이 불가능할 경우

프로젝트 진행 시 대체로 개발가이드에는 DEBUG, INFO, WARN, ERROR 4가지를 구분하여 출력하도록 되어 있다.

 

1. DEBUG

로컬 및 개발서버 환경 출력하며, 개발 및 디버깅 시 출력한다.

String param1 = "param1";
String param2 = "param2";

log.debug("value1 : {}, value2 : {}", param1, parma2);	// {} 순서대로 매핑됨

실행 결과

value1 : param1, value2 : param2

 

2. INFO

운영서버 환경에서 출력하며, 프로세스 정상 동작 여부 출력한다.(개인정보 출력 금지)

예제는 생략한다.

 

3. WARN

정상 프로세스가 아닌 경우 출력한다.

HashMap<String, Object> session = (HashMap<String, Object>)session.getAttribute("name");

if(session == null){
    log.warn("Not Exist Session: name");
    throw new Exception();
}

강제로 Exception 발생 시 주로 사용한다.

 

4. ERROR

try {
    int result = service.insertMember(vo);
}catch(Exception e) {
    log.error(e.getMessage(), e);
}

에러 발생 시 출력한다.

 

로그 출력 시 로그 레벨에 맞게 구분하여 출력하는 개발 습관을 들였으면 한다.