관리 메뉴

Life goes slowly...

[Java] 자바 Log 유틸 - Apache Log4j 본문

프로그래밍/Java

[Java] 자바 Log 유틸 - Apache Log4j

빨강소 2020. 10. 13. 00:15
728x90
반응형

Log 유틸 - Apache Log4j

컴퓨터 프로그래밍 언어를 작성하는 도중에 로그를 남기기 위해 사용되는 Java 기반 loging 유틸리티입니다. 대부분 디버그용 도구로 사용되고 있으며, 등급별로 FATAL, ERROR, WARN, INFO, DEBUG, TRACE 로그 레벨을 가지고 있으며 설정 파일에 대상별로 레벨을 지정이 가능하며 등급별로 저장하는 방식입니다.

 

개발자들이 개발 시 IDE 툴을 사용하여 디버깅을 하면 데이터 추적이 가능하지만 개발이 완료되고 컴파일 후에 서버에 반영후에는 데이터 추적하기가 어렵습니다. 버그를 추적할 수 있는 가장 편하고 좋은 방법이 로그를 남기고 추적하는 방법입니다.

 

 

Apache Log4j 구조

Logger(Category)

로깅메세지를 Appender로 전달.

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

Appender

로그의 출력 위치를 결정(File, Console, DB)

Layout

Appender의 위치가 결정되었다면 출력 Layout을 결정

 

 

Apache Log4j 설정 파일

설정 파일은 xml 또는 properties로 설정이 가능합니다.

//properties 파일
# Log4j Setting file
log4j.rootLogger=INFO, console

# Daily file log
log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=D:/Data/Log/data.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

# Console log
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p%l -%m%n

# log level and appender
log4j.logger.name.of.the.package.one=DEBUG, console
log4j.logger.name.of.the.package.two=INFO, logfile
//log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
 
    <!-- 콘솔 로그 -->
    <appender name="infoConsole" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%5p] %d{hh\:mm s} (%F\:%L) %c{1}.%M \: %m%n" />
        </layout>  
    </appender>
    
    <!-- root 설정 -->
    <root>
        <level value="INFO" />
        <appender-ref ref="infoConsole" />
    </root>
     
</log4j:configuration>

 

Log4j 설정 파일 Web.xml에 설정

<context-param>
	<param-name>log4jConfigLocation</param-name>
	<param-value>
		classpath:project/config/log4j.xml
	</param-value>
</context-param>
 
 <!-- Log4j -->
 <listener>
 	<listener-class>
 		org.springframework.web.util.Log4jConfigListener
	</listener-class>
 </listener>

 

 

Apache Log4j Level

FATAL

아주 심각한 에러 발생한 상태. 일반적으로는 거의 사용되지 않음

ERROR

요청을 처리 중에 문제가 발생한 상태

WARN

처리는 가능하지만 향후 시스템 에러의 원인이 될 수 있는 경고성 메시지

INFO

로그인 및 상태 변경과 같은 정보성 메시지

DEBUG

개발 시 디버그 용도로 사용되는 메시지

TRACE

log4j1.2.12에서 신규 추가된 레벨

 

 

728x90
반응형
Comments