1. log4j


- http://logging.apache.org/

- 자바 어플리케이션 개발시 효과적인 로깅을 위한 오픈 소스 프로젝트

- 현재 버전은 1.X 정식 버전과 2.0 베타 버전으로 2가지 버전으로 존재

- 프로그래밍내에서 직접 설정 또는 설정파일(properties 또는 xml) 설정 2가지 방법 존재

- 각 레벨별로 지정가능하고 지정한 등급 이상의 로그만 저장

- 어플리케이션에서 각 클래스는 각각의 로거를 가지거나 공통의 로거를 가질 수 있음

- 모든 로거가 상속할 수 있는 루트 로거를 제공



1.1. 프로그래밍 내에서 직접 설정 하는 방법

package com.tistory.gangzzang;

import org.apache.log4j.BasicConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class log4j_Test {
	
	// log4j_Test 클래스의 인스턴스를 받아옴
	private static final Logger logger = LoggerFactory.getLogger(log4j_Test.class);
	
	public static void main(String[] args) {
		// 콘솔에 로그 출력 위한 간단한 설정
		BasicConfigurator.configure();
		
		logger.info("[INFO]");
		logger.warn("[WARN]");
		logger.debug("[DEBUG]");
		logger.error("[ERROR]");
		logger.trace("[TRACE]");
	} // main
}

1.2. 설정파일 사용하는 방법


- 프로퍼티 파일 방식

# Log4j Setting file - INFO 레벨이상만 콘솔에 출력
log4j.rootLogger=INFO, console

# Console log - ConsoleAppender로 콘솔에 출력 설정
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p %l - %m%n

# Daily file log - DailyRollingFileAppender로 로그 파일 설정
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=${catalina.home}/logs/changpd.log
log4j.appender.logfile.DatePattern='.'yyyy-MM-dd
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%d{HH:mm:ss}][%-5p](%F:%L) - %m%n

# log level and appender	- 특정 패키지는 따로 설정 중복 가능
com.XXX.XXXX=DEBUG, console
com.XXX.XXXX.XXX=INFO, logfile

- XML 파일 방식





	
	
		
		
			
		
	
	
	
	
		
	
	
	
	
		
	
	
	
		
	
	
	
		
	

	
		
	

	
	
		
		
	
	


2. log4j 중요 컴포넌트


2.1. Logger

- 로그의 주체(로그 파일을 작성하는 클래스)

- 설정을 제외한 거의 모든 로깅 기능이 이를 통해 처리

- 어플리케이션 별로 사용할 로거를 정의하고 로그레벨과 Appender를 지정

- 로그레벨을 가지고 있으며, 로그의 출력여부는 로그문의 레벨과 로거의 레벨을 가지고 결정

- 어플리케이션을 작성하기전 어떤 로거를 사용해야 할지 정해야 함


2.2. Appender

- 로그를 출력하는 위치를 의미


 종류 

 설명 

 ConsoleAppender 

 콘솔화면으로 출력

 FileAppender

 파일에 로깅 

 RollingFileAppender 

 지정한 파일에 로그가 계속 남으므로 한 파일에 크기가 지나치게 커짐, 계획적인 로그관리 불가능

 JDBCAppender

 DB에 로그를 출력 


2.3. Layout

- Appender의 출렷 포맷

- 일자, 시간, 클래스명등 여러가지 정보를 선택하여 로그정보내용으로 지정

- 일반적으로 PatternLayout을 사용

- DateLayout, HTMLLayout, PatternLayout, SimpleLayout, XMLLayout


 형식

 설명 

 %p 

 debug, info, warn, error, fatal 등의 priority 출력

 %m 

 로그 내용 출력

 %d

 로깅 이벤트가 발생한 시간을 기록, %d{SimpleDateFormat형식으로 포맷팅} 

 %t

 로그 이벤트가 발생된 쓰레드의 이름을 출력

 %% 

 % 표시 출력 

 %n 

 플랫폼 종속적인 개행문자가 출력, \r\n 또는 \n

 %c

 카테고리를 표시, a. b. c 구조라면 %c{2}는 b.c 출력

 %C

 클래스명을 표시, com.tistory.gangzzang 구조라면 %C{2}는 tistory.gangzzang 출력 

 %F

 로깅이 발생한 프로그램 파일명을 나타냄 

 %l 

 로깅이 발생한 caller의 정보를 나타냄 

 %L 

 로깅이 발생한 caller의 라인수를 나타냄 

 %M 

 로깅이 발생한 method 이름을 나타냄

 %r 

 어플리케이션 시작 이후 부터 로깅이 발생한 시점의 시간(milliseconds)

 %x 

 로깅이 발생한 thread와 관련된 NDC(Nested Diagnostic Context)를 출력 

 %X 

 로깅이 발생한 thread와 관련된 MDC(Mapped Diagnostic Context)를 출력



3. Log4j 로그 레벨


- 기본적으로 fatab > error > warn > info > debug > trace 다섯 가지의 로그 레벨

- 지정된 로그레벨 이하의 로깅 이벤트는 무시


 로그 레벨

 설명 

 fatal 

 아주 심각한 에러가 발생한 상태, 시스템적으로 심각한 문제가 발생해서 어플리케이션 작동이 불가능할 경우가 해당, 어플리케이션에서 사용할 일 없음

 error

 요청을 처리하는 중 문제가 발생한 상태를 나타냄 

 warn

 처리 가능한 문제, 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지를 나타냄 

 info 

 로그인, 상태변경과 같은 정보성 메시지를 나타냄 

 debug 

 개발시 디버그 용도로 사용한 메시지를 나타냄 

 trace 

 신규 추가된 레벨로 디버그 레벨이 너무 광범위한 것을 해결하기 위해서 좀 더 상세한 상태를 나타냄 

'Web > Maven & Log4j' 카테고리의 다른 글

메이븐(Maven)  (0) 2013.12.05

+ Recent posts