'log4j2설정'에 해당되는 글 1건

  1. 2020.11.27 log4j 설정 정리
Web&Spring2020. 11. 27. 09:41

 

 

 

Log4j?

Log4j : Log for Java

로그 출력을 다양하게 도와주는 오픈소스 라이브러리

웹개발 하는분들은..정말 많이 쓰는 기본..

콘솔에도 찍고..주기적으로 파일로 쌓기도하고..

Appender를 정의해서 다양하게 쓸 수 있다..

Log4j 레벨 순서(왼쪽으로 갈수록 높음)

 

FATAL > ERROR > WARN > INFO > DEBUG > TRACE

 

 

패턴을 적용해서 로그를 찍는데, 다음은 패턴에 대한 옵션이다.

 

 

%p

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

%m

로그내용을 출력한다.

%d

로깅 이벤트가 발생한 시간을 출력한다.

ex)포맷은 %d{HH:mm:ss} 같은 형태의 SimpleDateFormat

%t

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

%F

로깅이 발생한 프로그램 파일명 출력

%l

로깅이 발생한 caller의 정보 출력

%L

로깅이 발생한 caller의 라인수 출력

%M

로깅이 발생한 method 이름 출력

%

% 표시 출력

%n

플랫폼 종속적인 개행문자 출력

%c

카테고리 출력

ex)카테고리가 a.b.c 처럼 되어있다면 %c{2}는 b.c 출력

%C

클래스명 출력

ex)클래스구조가 org.apache.xyz.SomeClass 처럼 되어있다면

%C{2}는 xyz.SomeClass 출력

%r

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

%x

로깅이 발생한 thread와 관련된 NDC(nested diagnostic context) 출력

%X

로깅이 발생한 thread와 관련된 MDC(mapped diagnostic context) 출력

 

 

 

 

다음은 주요 Appender 클래스

 

ConsoleAppender

org.apache.log4j.ConsoleAppender

콘솔에 로그 메시지 출력

FileAppender

org.apache.log4j.FileAppender

파일에 로그 메시지 기록

RollingFileAppender

org.apache.log4j.rolling.RollingFileAppender

파일 크기가 일정 수준 이상이 되면 기존 파일을 백업파일로 바꾸고 처음부터 기록

DailyRollingFileAppender

org.apache.log4j.DailyRollingFileAppender

일정 기간 단위로 로그 파일을 생성하고 기록

JDBCAppender

org.apache.log4j.jdbc.JDBCAppender

DB에 로그를 출력. 하위에 Driver, URL, User, Password, Sql과 같은 parameter를 정의할 수 있음

SMTPAppender

로그 메시지를 이메일로 전송

NTEventAppender

윈도우 시스템 이벤트 로그로 메시지 전송

 

 

 

설정파일은 xml이나 .properties로 할 수 있는데..xml로 하는게 관리가 개인적으로는 편했다..

Log4j2.xml 설정 예)

 

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %5p [%c] %m%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="java.sql" level="DEBUG" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="egovframework" level="DEBUG" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
          <!-- log SQL with timing information, post execution -->
        <Logger name="jdbc.sqltiming" level="DEBUG" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Logger name="org.springframework" level="DEBUG" additivity="false">
            <AppenderRef ref="console" />
        </Logger>
        <Root level="INFO">
            <AppenderRef ref="console" />
        </Root>
    </Loggers>
</Configuration>
Posted by 사슴영혼'-'