본문 바로가기

전산Tip/Java, JSP

[apache]Log4J 설치 및 사용법

반응형

1. Log4J 기능

 

Log4J는 5개의 레벨로 메세지를 로깅할 수 있다.


debug : 완성된 어플리케이션에서는 출력되지 않아야 하며, 개발의 편의를 위한 디버깅 메세지를 쓰기위해 사용

info : 어플리케이션의 verbose 모드에서 출력될만한 메세지를 쓰기위해 사용

warn : 어플리케이션의 경고 메세지를 쓰기위해 사용

error : 어플리케이션이 돌아가기는 하나, 에러 메세지를 쓰기위해 사용

fatal : 어플리케이션이 비정상적으로 종료될 치명적인 메세지를 쓰기위해 사용


2. Log4J 설치


1. 파일다운로드 : http://logging.apache.org/site/binindex.cgi 


2. logging-log4j-1.2.14.zip 압축을 풀고 \logging-log4j-1.2.14\logging-log4j-1.2.14\dist\lib\log4j-1.2.14.jar 파일을 해당 어플리케이션의 \WEB-INF\lib\ 에 위치시킨다.


3. \logging-log4j-1.2.14\examples\log4j.properties 파일을 \WEB-INF\classes\ 에 위치시키고 수정하여 사용



3. Log4j.properties 설정


Log4j 를 설정하는 기본파일은 log4j.properties 이다.


Log4j를 설정하는 것은 Category(logger)Appender (목적지/대상/핸들러)를 더하고 각각의 Appender 에게 Layout(구성)을 저정하는 것이다.


하나의 Category는 하나 혹은 그 이상의 대상에 로그하도록 설정된다. 이 대상을 Appender 라고 부르며 한번의 로깅 호출로 콘솔, 텍스트파일, Html 파일, Xml 파일, 소켓등으로 로그메세지를 보낼 수 있다. 이러한 Appender 에는 ConsoleAppender, FileAppender, SMTPAppender ,SocketAppender, SyslogAppender 등이 있다.


Log4j는 날짜, 시간, 메세지 레벨, Java 클래스명, 메소드명 등의 정보를 Layout의 설정을 통해 로그 메세지에 추가할 수 있다.



4. Log4J 활용


** Layout 사용하기 


%m : 메세지 출력

%p : priority 출력

%r : 어플리케이션이 시작되어 로깅이벤트가 발생하는 시점까지의 경과시간을 밀리세컨드로 출력

%c : category 출력

%n : 개행문자 출력

%d : 로깅이벤트가 일어나 날짜 출력 ( 프로그램의 실행속도를 느리게 한다.)

        예) %d{HH:mm:ss} 또는 %d{dd MMMM yyyy HH:mm:ss}

%C : 호출자의 클래스명 출력

%M : 호출자의 메소드 출력

%F : 호출자의 파일 이름 출력



** Appender 사용하기

 

* ConsoleAppender 옵션

 

Threadhole=WARN : category 의 priority가 더 낮게 지정되어 있더라도 여기 명시된 priority 보다 낮은 메세지들은 로깅하지 않는다.

ImmediateFlush=true : 기본값은 true 로그메세지가 버퍼되지 않는다.

Target=System.err : 기본값은 System.out

 

* FileAppender 옵션

Threadhole=WARN : category 의 priority가 더 낮게 지정되어 있더라도 여기 명시된 priority 보다 낮은 메세지들은 로깅하지 않는다.

ImmediateFlush=true : 기본값은 true 로그메세지가 버퍼되지 않는다.

File=testlog.txt : 로깅할 파일명

Append=false : 기본값은 true이며, 파일끝에 추가하는 것을 의미한다.


* RollingFileAppender 옵션

Threadhole=WARN : category 의 priority가 더 낮게 지정되어 있더라도 여기 명시된 priority 보다 낮은 메세지들은 로깅하지 않는다.

ImmediateFlush=true : 기본값은 true 로그메세지가 버퍼되지 않는다.

File=testlog.txt : 로깅할 파일명

Append=false : 기본값은 true이며, 파일끝에 추가하는 것을 의미한다.

MaxFileSize=100KB : KB, MB, GB 의 단위를 사용, 지정한 크기에 도달하면 로그파일을 교체한다.

MaxBackupIndex=5 : 최대 5개의 백업 파일을 유지한다.


* DailyRollingFileAppend 옵션


Threadhole=WARN : category 의 priority가 더 낮게 지정되어 있더라도 여기 명시된 priority 보다 낮은 메세지들은 로깅하지 않는다.

ImmediateFlush=true : 기본값은 true 로그메세지가 버퍼되지 않는다.

File=testlog.txt : 로깅할 파일명

Append=false : 기본값은 true이며, 파일끝에 추가하는 것을 의미한다.

DatePattern='.'yyyy-mm : 매월 파일을 교체한다. 교체주기는 월, 주, 일, 시간, 분 별로 정할 수 있다.

 

 

 

-------------------------------------------------------------------------

-- * Log4j 설정파일 예제

--  두개의 Appender를 사용하여, 하나는 콘솔에, 하나는 파일에 로깅한다.

-------------------------------------------------------------------------


# root category 의 레벨 (priority)를 DEBUG로 설정한다.

log4j.rootCategory=DEBUG, stdout, file


#log4j를 설정하는 상세 정보 출력여부 (true/false)
log4j.debug=false


#---------------------------------
# 첫번째 appender : 콘솔에 로깅
#---------------------------------
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.ImmediateFlush=true
log4j.appender.stdout.Target=System.err


# 출력 Layout 설정 : 호출하는 파일명출력

log4j.appender.stdout.layout.ConversionPattern=[%p] (%F) - %m%n


#---------------------------------
# 두번째 appender : 파일에 로깅
#---------------------------------
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.ImmediateFlush=true
log4j.appender.file.File=logs/testlog.txt
log4j.appender.file.Append=true


# 파일명 패턴
log4j.appender.file.DatePattern ='.'yyyy-MM-dd


# 출력 Layout 설정 : 호출하는 시간, 파일명등 출력
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d{HH:mm:ss}] [%p] (%F) - %m%n