본문 바로가기

Programming/Spring

log4j.properties 설정

* 설정 준비

- 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


Options
%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


참고 : ...까먹음,,;;