금융에 대한 모든 것

log4j란?

 log4j는 로그 관련 기능을 제공하는 라이브러리입니다. 웹 애플리케이션에서는 유지관리를 위해 웹 사이트에 접속한 사용자 정보나 메서드의 호출 시각 등 여러 가지 정보를 로그 파일로 저장하는데, log4j를 사용하여 로그 수집합니다.

 

log4j 설정하기 

 log4j.xml 파일을 통해 로그에 관한 설정을 할 수 있지만 그전에 알아두어야 할 것들이 있습니다.

 

log4j 태그

 log4j.xml을 이루는 태그들입니다.

태그

설명

<appender>

로그의 출력 위치를 결정합니다.

<layout>

로그가 어떤 형식으로 출력될 것인지 설정합니다

<logger>

로깅 메세지를 appender에 전달합니다.

 

appender 클래스

 appender 태그의 클래스 속성을 지정하여 로그 수집 위치와 방식을 설정할 수 있습니다.

appender 클래스 속성

설명

ConsoleAppender

콘솔에 로그 메세지를 출력합니다.

FileAppender

파일에 로그 메세지를 출력합니다.

RollingFileAppender

파일 크기가 일정 기준을 넘으면 기준 파일을 백업 파일로 바꾸고 처음부터 다시 기록합니다.

DailyRollingAppender

클래스로, 설정한 기간 단위로 새 파일을 만들어 로그 메세지를 기록합니다.

 

출력 형식

 각 속성들은 아래와 같은 의미를 가지고 있으며, layout 태그 안의 param 태그의 value 속성에 포맷팅 되어 로그가 출력됩니다.

속성

설명

%p

로그 레벨 이름

%m

로그 메시지 출력

%d

로깅 이벤트 발생 시각

%F

로깅이 발생한 프로그램 파일 이름

%l

로깅이 발생한 caller의 정보

%L

로깅이 발생한 caller의 라인 수

%c

로깅 메세지 앞에 전체 패키지 이름이나 전체 파일 이름

 

로그 레벨

로그 레벨은 총 6단계로 이루어져 있으며 표에서 아래로 내려갈수록 낮은 수준의 레벨을 나타냅니다.

로그 레벨

설명

FATAL

애플리케이션 작동이 불가능할 경우에 출력되로 레벨입니다.

ERROR

애플리케이션 실행 중 문제가 발생한 상태를 나타냅니다.

WARN

향후 시스템 오류의 원인이 될 수 있는 경고 메세지를 나타냅니다.

INFO

로그인, 상태 변경과 같은 실제 애플리케이션 운영과 관련된 정보 메세지를 나타냅니다.

DEBUG

개발 시 디버깅 용도로 사용한 메세지를 나타냅니다.

TRACE

DEBUG 레벨보다 상세한 로깅 정보를 출력하기 위해 도입된 레벨입니다.

 log.xml 파일에서 기준 레벨을 낮은 레벨로 설정했다면 그 레벨보다 높게 설정한 메시지들은 모두 출력됩니다. 만약 info로 설정했다면 fatal, error, warn레벨 메시지는 전부 출력됩니다.

 

log4j.xml

<!-- 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="com.example.spring01">
                <level value="info" />
        </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" />
        </root>

  xml 파일에서 로그의 형식을 바꾸고 싶다면 layout 태그 안의 param 태그의 value 속성 값을 바꾸어 주면 됩니다. 또한 주석으로 Application Loggers 가 돼있는 곳을 보면 logger 태그를 이용하여 기준 로그 레벨을 설정해주고 있습니다.

 

다음에는 AOP 기능을 이용하여 특정 메서드가 실행될 때 자동으로 로그 수집이 되도록 설정해보겠습니다.

반응형