로그 레벨 저장하기
log4j는 기본적으로 5가지의 로그 레벨이 존재한다.
로그 레벨 | 설명 |
---|---|
fatal | 아주 심각한 에러가 발생한 상태를 나타냄. 시스템적으로 심각한 문제가 발생해서 어플리케이션 작동이 불가능할 경우가 해당하는데, 일반적으로는 어플리케이션에서는 사용할 일이 없음. |
error | 요청을 처리하는중 문제가 발생한 상태를 나타냄. |
warn | 처리 가능한 문제이지만, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지를 나타냄. |
info | 로그인, 상태변경과 같은 정보성 메시지를 나타냄. |
debug | 개발시 디버그 용도로 사용한 메시지를 나타냄. |
trace | log4j1.2.12에서 신규 추가된 레벨으로서. 디버그 레벨이 너무 광범위한것을 해결하기위해서 좀더 상세한 상태를 나타냄. |
다만 이때 Logger의 setLevel에서 지정된 로그레벨이 있다면 지정된 로그레벨 이하의 로깅이벤트는 무시된다.
따라서 로그도 남지 않는다. 즉, 아래와 같이
logger.setLevel(Level.INFO);
코드내에 지정되어 있다면, 다음의 세 코드 중
logger.debug("debug 로그");logger.info("info 로그");logger.warn("warning 로그");
debug 로그는 남지 않고 info 와 warn 로그만 남는다. 자바에서는 C와 같이 전처리기의 기능이 없기 때문에 #ifdef DEBUG와 같은 형태와 같이 디버깅 때와 릴리즈 때의 디버깅코드를 각각 별도로 생성할 수가 없다. 따라서 log4j의 이러한 기능은 로그관리에 있어서 상당히 편리하다.
log4j.xml 에 설정내용에 대한 설명
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/"
debug="false">
==>페턴 레이아웃 설정
C 클래스명을 출력한다. DateLayout과 같은 설정을 추가하여 클래스 이름 또는 특정 패키지 이상만 출력하도록 설정할 수 있다.
d 로그 시간을 출력한다. java.text.SimpleDateFormat에서 적절한 출력 포맷을 지정할 수 있다.
F 파일 이름을 출력한다. 로그시 수행한 메소드, 라인번호가 함께 출력된다.
L 라인 번호만 출력한다.
m 로그로 전달된 메시지를 출력한다.
M 로그를 수행한 메소드명을 출력한다.
n 줄 바꿈
p 로그 이벤트명 (DEBUG등)
r 로그 처리시간 (milliseconds)
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %5p [%c] %m%n" />
</layout>
</appender>
<logger name="egovframework" additivity="false">
<level value="ERROR"/>
<appender-ref ref="console"/>
</logger>
<!-- log SQL with timing information, post execution -->
<logger name="jdbc.sqltiming" additivity="false">
<level value="ERROR" />
<appender-ref ref="console" />
</logger>
<logger name="org.springframework" additivity="false">
<level value="ERROR" />
<appender-ref ref="console" />
</logger>
<root>
<level value="ERROR" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
Layout
로그를 어떤 포맷의 형태로 남길 것인가? 단순히 메시지 외에도 현재 로그하는 대상의 스레드명, 로그시간 등등 많은 정보를 조합할 수 있다. Layout에는 HTMLLayout, PatternLayout, SimpleLayout, XMLLayout 등이 있다. SimpleLayout과 XMLLayout 등도 많이 사용할 수 있겠지만, 아무래도 자신이 원하는 스타일의 로그메세지를 남기기 불편한 면이 있다. 필자가 자주 사용하는 레이아웃은 PatternLayout으로서, c 함수의 printf처럼 다양한 로그 메시지 조합을 만들어 낼 수가 있다.
==> %p : debug, info, warn, error, fatal 등의 priority 가 출력된다.%m : debug(), info(), warn(), error(), fatal() 등의 함수로
http://keabab.egloos.com/5093331 내용을 참조하였습니다. 문제가 있거나 혹시 글의 삭제를 원하시면 남겨주시면 확인하고 삭제처리하도록하겠습니다.