1. 문서타이틀 영역 | 2007. 02 . 23
기획 : 마케팅 팀 이 정 민
커뮤니티 개발 1팀 한 오 석 | 2009. 03. 12
log4j 기초 사용법
예제로 쉽게 배우는
2. Log4j – 세미나 목표
2
Log를 기록하는데 있어서, 동작 원리를 인지하고 친숙하게 사용할 수 있는 계기를 마련한다.
1. Log4j의 구성요소를 중심으로 젂체적인 동작 원리를 이해한다.
2. 기본적인 구현 예제를 통해, Log4j script를 작성하는 방법에 대한 이해도를 높인다.
3. Log4j의 설정 방법을 통해 업무에 쉽게 적용할 수 있는 지식을 젂한다.
4. Log4j의 부가 기능을 젂하여 Log4j를 다양한 방법으로 활용할 수 있는 계기를 마련한다.
5. 효율적인 Log4j의 활용법을 설명함으로써 Log작성에 따른 부작용을 최소화 할 수 있는
방법을 제시한다.
구성요소, 동작원리
=> C&P는 그만!!
log4j.properties 의 요소에는 무엇이 있고 왜 그렇게 설정하는지 이해
log4j.xml
=> xml 설정 방식에 흥미를 느껴보자
여러 가지 부가기능
=> 이런 것도 있으니 혹시 유용한 곳이 생각나면 적용해보자.
6. Log
6
Logging Must Be …
Logging must be Systematic
Logging must be Controlled
Logging information must represent an application’s state
7. Log
7
Benefits of Logging
Problem Diagnosis
Quick Debugging
Easy Maintenance
History
Cost & Time Effective
Disadvantages of Logging
Runtime Overhead due to generation of logging & the device I/O
Extra code
Badly Logging can cause confusion
Badly Logging can seriously affect the performance
Benefits & Disadvantages
9. Log
9
Popular Java-Based Logging APIs
Apache log4j (org.apache.log4j)
: since 1999, Java 1.2 이상 권장
: Easy Control, Rich Configuration, Variaty of Destination
Java Logging API (java.util.logging)
: since 2002, Java 1.4 이상 사용가능
: 상대적으로 적은 Destination(Buffer, Console, File Socket)
: 상대적으로 적은 Format (XML, Simple Text, AWT)
Common Logging API
: 자체 로그 생성 기능 없음
: Logging API 의 통합을 목적으로 만들어진 API
11. Log4j 구성요소와 동작원리
11
Main Components of Log4j
Logger : log4j의 중심 클래스
: 로그의 그룹화, 레벨 설정, 로깅 이벤트 발생
Appenders : 로그의 출력 위치(Destination)를 지정
(Console, File, JMS, Mail. DB …. )
Layouts : 로그의 출력 포맷을 지정
(Text, Html, Xml … )
12. Log4j 구성요소와 동작원리 – Log Level
12
LEVEL
LEVEL DESCRIPTION
OFF 모든 로그를 출력을 하지 않음
FATAL 어플리케이션을 종료시킬 정도의 치명적인 에러
ERROR 어플리케이션 동작 중 실행 지속 가능한 에러
WARN 간단한 결점, 예상치 못한 행동으로 주의할 필요가 있는 경우 사용
INFO 정상적인 어플리케이션 동작 상태에서의 일반적인 정보
DEBUG 개발 단계에서 디버깅에 필요한 로그가 필요할 때 사용
TRACE DEBUG 단계에 비하여 좀 더 세세한 정보를 필요로 할 때 사용
ALL 모든 레벨의 로그 정보를 기록
Priority : ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
25. Appenders - ConsoleAppender
25
Target : System.out 또는 System.err 둘 중 하나 선택
Follow : true인경우 SystemOutStream 객체에 저장;
activateOptions : appender를 활성화
ConsoleAppender
- System.out , System.err(콘솔) 에 로그를 남기는 Appender
26. Appenders - FileAppender
26
FileAppender
- File에 로그를 남기는 Appender
File : 파일 선택
Append : 이어 쓸 것인지 선택
BufferdIO : BufferedOutputStream 을 사용할 것인지 선택
BufferdSize : Buffer size 지정
27. Appenders - RollingFileAppender
27
my.log
my.log my.log.1
my.log my.log.1 my.log.2
LOG
LOG
LOG
RollingFileAppender
- 크기에 따라 File명을 변환하며 로그를 남기는 Appender
MaxFileSize : MB, KB, GB 단위로 설정
MaximumFileSize : Byte단위로 설정 가능
MaxBackupIndex : Index를 얼마까지 늘릴지 지정
82. Log4j 성능 이슈
82
LoggingEvent를 발생시키는 시간을 절약하기 위해 아래의 메소드를 사용
logger.isInfoEnable()
logger.isDebugEnable()
logger.isTraceEnable()
Log4j 성능 이슈
83. Log4j 성능 이슈
83
아래의 ConversionPattern 은 프로그램 실행 속도를 느리게 하는 옵션으로
반드시 필요한 경우가 아니면 사용을 자제
%d : 날짜 및 시간 출력
%l : Log Location
%C : Logging event 가 발생한 클래스명
%M : Logging event 가 발생한 메소드명
%F : Logging event 가 발생한 파일명
%L : Logging event 가 발생한 라인
Log4j 성능 이슈