Log4j는 자바에서 사용되는 로깅 라이브러리로, 로그 메시지를 생성, 출력 및 관리하는데 도움을 줍니다. 로그 메시지의 양이 많을 경우, 로그 필터링은 특정 기준에 따라 원하는 로그만 출력하고 나머지는 무시할 수 있는 중요한 기능입니다.
이 글에서는 Log4j에서 로그 필터링 기준을 설정하는 방법에 대해 알아보겠습니다.
1. Log4j 의존성 추가
첫째로, 프로젝트의 의존성에 Log4j를 추가해야 합니다. Maven을 사용한다면 pom.xml
파일에 다음 코드를 추가합니다.
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
Gradle을 사용한다면 build.gradle
파일에 아래 코드를 추가합니다.
compile group: 'log4j', name: 'log4j', version: '1.2.17'
의존성을 추가한 후, 프로젝트를 다시 빌드합니다.
2. Log4j 설정 파일 작성
Log4j 설정 파일은 로깅 관련 설정을 포함하고 있으며, 필터링 기준도 여기서 설정합니다. 일반적으로 log4j.properties
나 log4j.xml
파일로 작성됩니다.
예를 들어, log4j.properties
파일에 다음과 같은 설정을 추가해 보겠습니다.
log4j.rootLogger=INFO, console, file
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=/path/to/logs.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n
log4j.logger.com.example=DEBUG
위의 설정 예시에서는 로그 레벨이 INFO인 경우 “console”과 “file” 앱던더에 로그 메시지를 출력하도록 되어 있습니다. “com.example” 패키지의 로그 레벨은 DEBUG로 설정되어 있으므로, 해당 패키지의 로그 메시지만 파일에 출력됩니다.
3. 로그 필터 설정
로그 필터를 설정하려면 log4j.xml
파일에서 해당 앱던더의 프로퍼티를 추가하거나, 코드로 필터 객체를 생성하고 앱던더에 추가해야 합니다.
아래는 log4j.xml
파일에서 로그 필터를 설정하는 예시입니다.
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelMatchFilter">
<param name="LevelToMatch" value="ERROR"/>
<param name="AcceptOnMatch" value="false"/>
</filter>
<filter class="org.apache.log4j.varia.DenyAllFilter"/>
</appender>
위 예시에서는 “console” 앱던더에 “ERROR” 레벨의 로그 메시지만 허용하고, 나머지는 필터링합니다.
4. 로그 필터링 테스트
로그 필터링 설정을 마쳤으면, 실제로 로그 메시지가 원하는 대로 필터링되는지 테스트해야 합니다. 필터링 테스트를 위해 로그 메시지를 생성하고 로그를 확인하는 코드를 작성합니다.
import org.apache.log4j.Logger;
public class ExampleClass {
private static final Logger logger = Logger.getLogger(ExampleClass.class);
public static void main(String[] args) {
logger.info("This is an info message");
logger.error("This is an error message");
logger.debug("This is a debug message");
}
}
위의 예시에서는 “INFO” 레벨과 “ERROR” 레벨의 로그 메시지를 생성하고 있습니다. “DEBUG” 레벨의 로그는 필터링에 걸려 출력되지 않을 것입니다.
실행한 후, 로그 파일을 확인하면 “This is an error message”만 로그로 기록된 것을 확인할 수 있습니다.
이렇게 Log4j의 로그 필터링 기준을 설정하는 방법을 알아보았습니다. 로깅 기능을 사용하면서 필요한 로그만 출력하고, 불필요한 로그를 걸러내어 보다 효율적인 로그 관리가 가능합니다.