Jul 27 2007
[JAVA]Apache Logging(Log4j) - 편리한 로깅 기록을 도우는 라이브러리
Log4j는 Java 관련한 로깅 라이브러리에서 가장 많이 사용되고 있는 라이브러리입니다.
아파치 재단의 명성에 걸맞게 상당히 강력하며, JDK 1.4부터 기본 포함되어 있습니다.
관련 자료들을 읽어 보시면 ‘정말 간단하게 강력한 로깅을 수행할 수 있구나’ 라고 생각하실 것입니다.
먼저, 영어 자료입니다.
영어 문서를 자유롭게 읽으실 수 있으시다면 이 문서 하나만 보셔도 되지 않을까 싶네요. 사실 전 아래의 사이트로 공부했는데, 위의 문서를 대충 훓어보니 내용이 거의 다 있습니다.
영어 울렁증이 있으신 분은 (약간의 귀차니즘이 있지만) 아래 사이트를 참조하세요.
phpBB로 만들어져 있고, 가입을 해야 볼 수 있지만, 주인장님의 Log4j 관련한 포스트들은 그만한 가치가 있네요.
딱딱하지도 않고, 예제 중심으로 설명이 되어 초심자 입장에서 친숙하게 익힐 수가 있습니다.
출력해서 보려고 워드 파일에 정리하니까 40페이지 정도 되고, 한 페이지에 두장씩 찍으니 20페이지… 쭉 훓어보는 데 30분도 안 걸린 것 같네요. 이렇게 깔끔하게 정리해 주신 데 감사드려야겠습니다. ^^
간단한 설정 파일만으로도 강력한 로깅이 가능하다는 게 Log4j의 강력함이라고 할 수 있겠습니다.
아래는 제가 loveLazur 님의 포스트들을 읽고 테스트 용도로 만든 것입니다.
[log4jconf.xml]
<?xml version=”1.0″ encoding=”UTF-8″ ?>
<!DOCTYPE log4j:configuration SYSTEM “log4j.dtd”>
<log4j:configuration xmlns:log4j=’http://jakarta.apache.org/log4j/’><!– Standard output –>
<appender name=”STDOUT” class=”org.apache.log4j.ConsoleAppender”>
<layout class=”org.apache.log4j.PatternLayout”>
<param name=”ConversionPattern”
value=”%d %-5p [%t] %C{2} (%F:%L) - %m%n”/>
</layout>
</appender><!– Daily Rolling File Appender output –>
<appender name=”DAILY” class=”org.apache.log4j.DailyRollingFileAppender”>
<param name=”datePattern” value=”yyyy-MM-dd” />
<param name=”file” value=”log/SyncService.log” />
<param name=”append” value=”true” />
<layout class=”org.apache.log4j.PatternLayout”>
<param name=”ConversionPattern”
value=”%d %-5p [%t] %C{2} (%F:%L) - %m%n”/>
</layout>
</appender><!– Category logger–>
<category name=”CONSOLELOG” additivity=”false”>
<priority value=”debug” />
<appender-ref ref=”STDOUT” />
</category><!– package logger –>
<category name=”FILELOG” additivity=”false”>
<priority value=”debug” />
<appender-ref ref=”DAILY” />
</category><!– root category –>
<root>
<priority value =”debug” />
<appender-ref ref=”STDOUT” />
</root>
</log4j:configuration>
[test.java]
…
{
Logger logger = Logger.getLogger(”FILELOG”);Logger logger2 = Logger.getLogger(”CONSOLELOG”);
String conf = “log4jconf.xml”;
DOMConfigurator.configure(conf);logger.debug(”Here is some DEBUG”);
logger.info(”Here is some INFO”);
logger.warn(”Here is some WARN”);
logger.error(”Here is some ERROR”);
logger.fatal(”Here is some FATAL”);logger2.debug(”Here is some DEBUG!!”);
}
이렇게 하면 콘솔 화면에는
2007-07-27 00:49:37,687 DEBUG [main] test.SyncFeatureTest (SyncFeatureTest.java:362) - Here is some DEBUG!!
log/SyncService.log 파일은
2007-07-27 00:49:37,640 DEBUG [main] test.SyncFeatureTest (SyncFeatureTest.java:356) - Here is some DEBUG
2007-07-27 00:49:37,671 INFO [main] test.SyncFeatureTest (SyncFeatureTest.java:357) - Here is some INFO
2007-07-27 00:49:37,671 WARN [main] test.SyncFeatureTest (SyncFeatureTest.java:358) - Here is some WARN
2007-07-27 00:49:37,671 ERROR [main] test.SyncFeatureTest (SyncFeatureTest.java:359) - Here is some ERROR
2007-07-27 00:49:37,687 FATAL [main] test.SyncFeatureTest (SyncFeatureTest.java:360) - Here is some FATAL
로 기록됩니다. 특히, “FILELOG” 로거로 로깅되는 정보는 날짜가 지나면 파일이 자동으로 생성되어 나뉩니다.
