반응형

이번 글에서는 [이클립스/Eclipse] 이클립스 log4j2.xml 설정 방법을 기록한다. 개발하는데 있어서 로그를 찍어서 테스트를 하는 것은 기본 중의 기본이다. 그렇기에, 로그를 찍는 것은 필수이자 성공적인 단위, 통합 등의 테스트를 도달 함에 있어 중요하다.


1. 개발 환경

- Eclipse 2021-06 (4.20.0)

- JDK 1.8

- Apache Tomcat v8.5


log4j2 설정 방법

1. pom.xml에 아래와 같이 dependency를 추가한다. 아래에서, systemPath는 추가사항이다.

<dependency>
	<groupId>log4jdbc</groupId>
	<artifactId>log4j2-jdbc4</artifactId>
	<version>1.16</version>
	<scope>system</scope>
	<systemPath>${webapp.lib}/log4jdbc-log4j2-jdbc4-1.16.jar</systemPath>
</dependency>

 

2. log4j2.xml을 열어 로그 레벨을 설정한다.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
    	<Logger name="com" level="debug" additivity="false">
            <appender-ref ref="console" />
        </Logger>
        <Logger name="jdbc.sqlonly" level="info" additivity="false">
            <appender-ref ref="console" />
            <RegexFilter regex="(?s).*==IGNORE_LOG==.*" onMatch="DENY" onMismatch="NEUTRAL" useRawMsg="true" />
        </Logger>
        <Logger name="org.springframework" level="info" additivity="false">
            <appender-ref ref="console" />
        </Logger>
        <Root level="error">
            <AppenderRef ref="console" />
        </Root>
    </Loggers>
</Configuration>

 

1) <Configuration status="WARN"></Configuration> 태그

- log4j2.xml이 로드될 때 발생하는 로그 레벨을 설정하는 곳이다.

- 즉, log4j2.xml이 로드될 때 WARN 로그 레벨 이상의 로그가 있다면 다 출력한다.

<Configuration status="TRACE">
</Configuration>

<Configuration status="DEBUG">
</Configuration>

<Configuration status="INFO">
</Configuration>

<Configuration status="WARN">
</Configuration>

<Configuration status="ERROR">
</Configuration>

<Configuration status="FATAL">
</Configuration>

 

2) <Appenders></Appenders> 태그

- 로그를 출력하는 위치를 설정하는 곳이다. 아래의 코드는 console에 아래의 레이아웃 패턴으로 출력한다는 코드다.

- Appender의 종류는 Console, File, RollingFile, JDBC가 있다.

<Appenders>
	<Console name="console" target="SYSTEM_OUT">
		<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
	</Console>
</Appenders>

 

3) <Loggers></Loggers> 태그

<Logger></Logger> 태그를 묶어주는 태그다.

<Loggers>
	<Logger name="com" level="error" additivity="false">
        <appender-ref ref="console" />
    </Logger>
    <Logger name="jdbc.sqlonly" level="error" additivity="false">
        <appender-ref ref="console" />
        <RegexFilter regex="(?s).*==IGNORE_LOG==.*" onMatch="DENY" onMismatch="NEUTRAL" useRawMsg="true" />
    </Logger>
    <Logger name="org.springframework" level="error" additivity="false">
        <appender-ref ref="console" />
    </Logger>
    <Root level="error">
        <AppenderRef ref="console" />
    </Root>
</Loggers>

 

4) <Logger></Logger> 태그

- <Logger> 태그는 로깅 작업에 있어서 본격적으로 로거를 설정하는 곳이다.

- 아래의 코드와 같이, Logger의 name과 레벨, additivity를 설정할 수 있다.

- additivity는 Log 메시지가 중복되는 경우가 있는데, additivity를 false로 두면 중복되는 것을 막을 수 있다.

- <Logger></Logger> 태그 안에 있는 <appender-ref> 태그는 log4j2.xml에서 맨 처음에, <Appenders></Appenders> 태그에서 선언한 Appender를 가져온다. 여기서, <Appenders></Appenders> 태그 안에 선언하지 않으면 사용할 수 없다.

<Logger name="com" level="error" additivity="false">
	<appender-ref ref="console" />
</Logger>

 

 

3. 로그레벨의 순서

로그 레벨의 순서는 아래와 같다.

TRACE > DEBUG > INFO > WARN > ERROR > FATAL

 

1) TRACE : DEBUG보다 자세한 정보를 나타냄(DEBUG로 나타내기에는 너무 범위가 넓어서)

2) DEBUG : 프로그램에서 사용자가 지정하는 디버그를 나타냄
3) INFO : 프로그램의 동작 시간(RunTime), 동작 형태(Start) 등의 상태를 나타내는 메시지를 나타냄

4) WARN : 경고성 메시지를 나타냄

5) ERROR : ERROR가 발생하는 경우를 나타냄

6) FATAL : 프로그램을 정상적으로 작동시킬 수 없는 상태를 나타냄

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기