본문 바로가기

프로그래밍/Spring

[Spring] log4j

log4j란

 log4j는 아파치에서 만든 자바기반의 로그 오픈소스 라이브러리이다.

개발을 하다보면 디버깅을 위해서 System.out.println()을 이용하여 흐름이나 데이터를 출력한 경험이 있을 것이다.

하지만 System.out.println()은 단순히 텍스트만 표시해줄 뿐만 아니라 시스템 성능에도 영향을 미치게된다.

 반면 log4j를 사용하게 되면 단순 로그뿐만 아니라 로그 포맷을 통해 에러위치, 출력형식, 출력레벨등을 정의할 수 있기 때문에 로그를 찍는데 여러 방면(성능 부분에서도)에서 더 유리하다고 볼 수 있다.

 

로그 레벨

 log4j는 6개의 로그 레벨을 가지고 있다. 설정파일에서 레벨지정이 가능하고, 그 등급 이상의 로그만 출력할 수 있도록 설정할 수 있다. 예를들어 INFO 등급으로 설정을 했다면 그 이상 등급인 INFO, WARN, ERROR, FATAL 등급의 에러가 출력되는 방식이다.

 

표에서 아래로 내려갈수록 낮은 수준의 레벨을 의미한다.

로그 레벨 설명
FATAL 애플리케이션 작동이 불가능할 경우 출력되는 레벨
ERROR 애플리케이션 실행 중 문제가 발생한 상태
WARN 향후 시스템 오류의 원인이 될 수 있는 경고 메시지
INFO 로그인, 상태 변경과 같은 실제 애플리케이션 운영과 관련된 정보 메시지
DEBUG 개발 시 디버깅 용도로 사용한 메시지
TRACE DEBUG 레벨보다 상세한 로깅 정보를 출력하기 위한 레벨

 

log4j 태그

태그 설명
<appender> 로그의 출력 위치를 결정
<layout> 그가 어떤 형식으로 출력 될 것인지 설
<logger> 로깅 메시지를 appender에 전달

 

appender 클래스

 appender 태그의 클래스 속성을 지정하여 로그 수직 위치와 방식을 설정할 수 있다.

appender 클래스 속성 설명
ConsoleAppender 콘솔에 로그 메시지를 출력
FileAppender 파일에 로그 메시지를 출력
RollingFileAppender 파일 크기가 일정 기준을 넘으면 기준 파일을 백업 파일로 바꾸고 처음부터 다시 기록
DailyRollingAppender 클래스로 설정한 기간 단위로 새 파일을 만들어 로그 메시지를 기록

 

출력 형식

각 속성들은 아래와 같은 의미를 가지고 있으며, layout 태그 안의 param태그의 value 속성에 포맷팅 되어 로그가 출력된다.

속성 설명
%p 로그 레벨 이름
%m 로그 메시지 출력
%d 로그 이벤트 발생 시각
%F 로깅이 발생한 프로그램 파일 이름
%I 로깅이 발생한 celler의 정보
%L 로깅이 발생한 celler의 라인 수
%c 로깅 메세지 앞에 전체 패키지 이름이나 전체 파일 이름