* 설정 준비
- log4j-1.x.xx.jar를 복사해서 eclipse/workspace/<프로젝트명>/WEB-INF/lib에 붙여넣기
- eclipse/workspace/<프로젝트명>/WEB-INF/src에 log4j.properties를 작성
- eclipse/workspace/<프로젝트명>/WEB-INF/web.xml에 아래 부분 추가
<init-param>
<param-name>log4j-configuration</param-name>
<param-value>/WEB-INF/src/log4j.properties</param-value>
</init-param>
-> 굳이 /WEB-INF/src에 log4j.properties를 작성하지 않아도 되는데, 이 properties 파일 위치를 바꿀 경우 web.xml의
param-value의 값도 바꾼 위치에 맞게 설정해준다.
자바 프로그램의 로깅에서 사실상 표준의 위치에 있는 Log4J의 설정 파일은 프로퍼티 형태의 log4j.properties와 XML 형태의 log4j.xml이 있다.
XML 버전이 조금 늦게 나왔지만 향후에는 XML 설정파일만 지원하게 될 것이라는 얘기도 있지만, 프로퍼티 설정파일이 Java의 deprecated 메소드가 여전히 남아있는 것처럼 아주 없어질 것 같지는 않다.
한 가지 유의할 점은 Log4J가 자동 설정파일을 찾을 때 클래스패스에서 log4j.xml 파일을 먼저 찾고, 이 xml 파일이 없을 경우에만 log4j.properties를 찾는다는 것이다.
* log4j.properties의 사용 예제
#로그설정(로그레벨 DEBUG ~ FATAL, OFF일경우 로그사용 안함), 사용 로그 이름
log4j.rootLogger=DEBUG, stdout, rolling
#stdout 로그 레벨 설정
log4j.appender.stdout.Threshold=WARN
Log Level
- TRACE : 가장 상세한 정보를 나타낼 때 사용한다.
- DEBUG : 일반 정보를 상세히 나타낼 때 사용한다.
- INFO : 일반 정보를 나타낼 때 사용한다.
- WARN : 에러는 아니지만 주의할 필요가 있을 때 사용한다.
- ERROR : 일반 에러가 일어 났을 때 사용한다.
- FATAL : 가장 크리티컬한 에러가 일어 났을 때 사용한다.
FATAL > ERROR > WARN > INFO > DEBUG > TRACE
#stdout 콘솔 어펜더로 사용
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
Appender
Appender | 설 명 |
org.apache.log4j.AsyncAppender | 비동기 출력 - 네트워크 전송등 조금 특수한 용도에 사용된다. 로그 이벤트를 queue에 모은후 다른 쓰레드에서 스케줄로 로그를 출력해주는것이다. 다른 Appender와 결합해서 사용한다. |
org.apache.log4j.ConsoleAppender |
stdout, stderr 출력 - Console |
org.apache.log4j.DailyRollingFileAppender | 지정한 시간단위로 파일 출력- File |
org.apache.log4j.varia.ExternallyRolledFileAppender | 외부 Roller로 출력 |
org.apache.log4j.FileAppender |
파일 출력 - File |
org.apache.log4j.jdbc.JDBCAppender | 데이터베이스로 출력 |
org.apache.log4j.net.JMSAppender | JMS로 출력 |
org.apache.log4j.lf5.LF5Appender | LogFactor5라는 스윙 로그뷰어로 출력 |
org.apache.log4j.nt.NTEventLogAppender | Windows 이벤트 로그로 출력 |
org.apache.log4j.varia.NullAppender | 아무것도 안함 |
org.apache.log4j.RollingFileAppender | 파일 크기단위로 파일 출력 - File |
org.apache.log4j.net.SMTPAppender | 메일로 출력 |
org.apache.log4j.net.SocketAppender | 외부 서버에 Socket으로 출력 |
org.apache.log4j.net.SocketHubAppende | SocketServer로서 출력 |
org.apache.log4j.net.SyslogAppender | Unix Syslog로 출력 |
org.apache.log4j.net.TelnetAppender | #FAE0D4 |
#stdout 패턴 레이아웃 사용
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
Layout - 로그 출력을 어떤 형식으로 할지 구체적으로 지정해주는 부분
org.apache.log4j.SimpleLayout |
기본 레이아웃 |
org.apache.log4j.TTCCLayout |
시간 출력에 특화된 레이아웃 |
org.apache.log4j.HTMLLayout |
HTML형식으로 출력. 테이블 형식으로 각각의 로그를 출력한다. |
org.apache.log4j.XMLLayout |
XML형식으로 출력 |
org.apache.log4j.PatternLayout |
사용자 마음대로 패턴을 지정하여 출력 |
#stdout 레이아웃 패턴 정의
log4j.appender.stdout.layout.ConversionPattern=%t> [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}] [%L] [%p] %m %n
- %d : 로깅 이벤트가 일어난 날자(date)
- %p : 로깅 이벤트의 priority
- %t : 로깅 이벤트를 생성한 스레드 이름
- %c : 로깅 이벤트의 category
- %F : 로깅요청을 일으킨 파일 이름
- %L : 로깅요청을 일으킨 파일의 행번호
- %x : 로깅이벤트를 발생시킨 스레드에 관련된 내포검사항목 (Nested Diagnostic Context : NDC)을 출력
- %C : 로깅요청을 일으킨 호출자의 완전한 클래스이름
- %M : 로깅요청을 일으킨 메소드
- %m : 메세지
- %n : 플랫폼 독립적인 개행문자
- %l : 소스코드의 위치정보를 출력한다. %C. %M(%F:%L) 의 축약형
#롤링파일 Appender 사용
log4j.appender.rolling=org.apache.log4j.RollingFileAppender
#롤링파일 로그에 대한 파일명 (경로 설정 가능 함)
log4j.appender.rolling.File=output.log
# Log File 뒤에 날짜 패턴 추가
log4j.appender.rolling.DatePattern='.'yyyyMMdd
# Tomcat Restart시 새로 작성 여부 (true - 기존파일에 추가, false - 새로 작성)
log4j.appender.rolling.Append=true
#로그파일 최대 크기
log4j.appender.rolling.MaxFileSize=1KB
#최대파일이 넘어갔을 경우 백업
log4j.appender.rolling.MaxBackupIndex=1
#롤링파일 패턴 레이아웃 사용
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
#롤링파일 패턴 정의
log4j.appender.rolling.layout.ConversionPattern=%t> [%d{yyyy-MM-dd HH:mm:ss}] [%c{1}] [%L] [%p] %m %n
'Programming > Spring' 카테고리의 다른 글
Spring - 뷰 리졸버(View resolver) (1) | 2012.12.11 |
---|---|
Spring - Transaction2 (선언적 트랜잭션 처리) (0) | 2012.12.10 |
Spring - Transaction1 (스프링의 트랜잭션 지원) (0) | 2012.12.06 |
Spring - POJO (2) | 2012.05.14 |
Spring - Bean 초기화 및 생명주기 (0) | 2012.05.11 |