(Spring) 10. log4j를 알아보자!
log4j를 알아보자!
1. log4j
- 로그 기능을 제공하는 오픈 소스 라이브러리
- 어플리케이션에서 웹 사이트에 접속한 사용자 정보나 각 클래스의 메서드 호출 시각 등
여러가지 정보를 로그로 출력해서 관리 - 메이븐에선 프로젝트 생성시 자동으로 log4j 라이브러리가 설치됨.
2. log4j.xml을 이루는 태그
- ex) log4j
<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<!-- Application Loggers -->
<logger name="kr.co.bob">
<level value="info" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
...
1) <appender>
- 로그를 어디에 출력 할것인지 출력 위치를 결정 (콘솔, 파일, db)함
- XXXAppender로 끝나는 클래스들의 이름을 보면 출력 위치를 알수 있음
2) <layout>
- 어떤 형식으로 출력할지 출력 레이아웃을 결정함
3) <logger>
- 로깅 메세지를 Appender에 전달함
- 개발자가 로그 레벨을 이용해 로그 출력 여부를 조정 할수 있다.
3. Appender 클래스
1) ConsoleAppender
- 콘솔에 로그 메세지를 출력함
2) FileAppender
- 파일에 로그 메세지를 출력함
3) RollingFileAppender
- 파일 크기가 일정 기준을 넘으면 기존 파일을 백업 파일로 바꾸고
처음부터 다시 기록함.
4) DailyRollingFileAppender
- 설정한 기간 단위로 새파일을 만들어 로그 메세지를 기록함.
4. PatternLayout 클래스에서 사용하는 출력 속성
1) %p
- fatal, error, warn, info, debug, trace 등 로그 레벨 이름 출력
2) %m
- 로그 메세지 출력
3) %d
- 로깅 이벤트 발생 시각 출력
4) %F
- 로깅이 발생한 프로그램 파일 이름 출력
5) %M
- 로깅이 발생한 method 이름 출력
6) %L
- 로깅이 발생한 caller의 라인 수 출력
…
4. DailyRollingFileAppender 추가
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<!-- Appenders -->
<!-- ConsoleAppender를 이용해서 로그 메세지를 콘솔로 출력함 -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n" />
</layout>
</appender>
<!-- DailyRollingFileAppender : 로그 메세지를 일별 파일로 출력함-->
<!-- DailyRollingFileAppender를 이용해서 로그 메세지를 파일로 출력함 -->
<appender name="dailyFileAppender" class="org.apache.log4j.DailyRollingFileAppender" >
<param name="File" value="/Users/jeong-won-yeong/Documents/Spring/workspace-spring/logs/output.log" />
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout"> <!--PatternLayout 출력 형식을 지정 -->
<param name="DatePattern" value="'.'yyyy-MM-dd" />
<param name="ConversionPattern" value="[%d{HH:mm:ss}][%-5p](%F:%L)-%m%n" />
</layout>
</appender>
<!-- Application Loggers : 아래 패키지에 존재하는 클래스들의 로그 레벨 설정 -->
<logger name="kr.co.tiles">
<level value="debug" />
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info" />
</logger>
<logger name="org.springframework.beans">
<level value="info" />
</logger>
<logger name="org.springframework.context">
<level value="info" />
</logger>
<logger name="org.springframework.web">
<level value="info" />
</logger>
<!-- Root Logger -->
<root>
<priority value="warn" />
<appender-ref ref="console" /> <!-- 애플리케이션 전체로그를 콘솔로 출력함 -->
<appender-ref ref="dailyFileAppender" <!-- 애플리케이션 전체로그를 파일로 출력함 -->
</root>
</log4j:configuration>
댓글남기기