본문 바로가기
IT, 개발/JAVA

Logback 특정 문자 포함한 로그 필터링 하는 방법

by 개발자스터디 2023. 7. 18.
반응형
 
 
 
 
Logback에서 사용자 정의 필터 클래스를 생성하고 적용하는 방법에 대해 알아보도록 하겠습니다.
특정 문자를 포함한 로그만 따로 파일로 저장하기 위해 Logback 설정을 하는 방법입니다.


1. 필터 클래스 생성하기

 

 
 
사용자 정의 필터 클래스를 생성합니다.
 
필터 클래스는 ch.qos.logback.core.spi.Filter를 상속받아야 합니다.
필터링 로직은 decide 메서드 내에서 구현합니다.
 
1
2
3
4
5
6
7
8
9
10
11
12
13
import ch.qos.logback.core.spi.FilterReply;
import ch.qos.logback.core.spi.Filter;
import ch.qos.logback.classic.spi.ILoggingEvent;
 
public class CustomFilter extends Filter<ILoggingEvent> {
    @Override
    public FilterReply decide(ILoggingEvent event) {
        // 필터링 로직을 구현
        // 필터 조건에 맞는 경우 FilterReply.ACCEPT를 반환
        // 필터 조건에 맞지 않는 경우 FilterReply.DENY를 반환
        // 필터링 조건을 적절히 설정하여 로그 이벤트를 필터링
    }
}
cs


 
 

2. Logback 설정 파일에 필터 추가

 

Logback 설정 파일인 logback.xml에 사용자 정의 필터를 추가하여 적용합니다.
필터는 appender 요소 내에 추가되어 적용됩니다.
 
 
logback.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
<configuration>
    <appender name="FILE_FILTER" class="ch.qos.logback.core.FileAppender">
        ...
        ...
        <filter class="com.example.CustomFilter" />
    </appender>
 
    ...
 
    <root level="TRACE">
        <appender-ref ref="FILE_FILTER" />
    </root>
</configuration>
cs
 
위의 예제에서는 FILE_FILTER 라는 이름의 파일 앱던더에 CustomFilter를 필터로 추가하고 있습니다.
 
필터 클래스의 패키지 경로를 정확히 지정해야 합니다.
 
필터는 <filter> 요소의 class 속성에 필터 클래스의 전체 경로를 지정하여 추가합니다.

 

 

 

반응형

 

 

3. 필터링 로직 구현하기

 
 
CustomFilter 클래스의 decide 메서드 내에 필터링 로직을 구현합니다.
 
이 메서드에서는 로그 이벤트를 분석하고 필터링 조건에 따라 로그 이벤트를 허용하거나 거부합니다.
필터링 조건에 따라 FilterReply.ACCEPT 또는 FilterReply.DENY를 반환하여 필터링을 제어합니다.

아래 예제는 로그 내용 중 특정 단어가 포함되어있다면 로그를 허용하고 단어가 포함되어 있지 않다면 로그를 허용하지 않는 필터링 예제입니다.
 
위 1번에서 생성한 클래스에 적용하면 됩니다.
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
public class CustomFilter extends Filter<ILoggingEvent> {
    @Override
    public FilterReply decide(ILoggingEvent event) {
        if (event.getMessage().contains("TEST")) 
        {
            return FilterReply.ACCEPT;
        } 
        else 
        {
            return FilterReply.DENY;
        }
    }
}
cs
 
 
TEST 라는 단어가 포함된 로그만 허용하겠다는 의미입니다.
 
 

이와 같이 사용자 정의 필터 클래스를 생성하여 Logback 설정에 추가하면 필터링 로직을 적용할 수 있습니다.
 
필터 클래스를 사용하여 로그 이벤트를 제어하고 원하는 조건에 따라 로그를 필터링할 수 있습니다.
 
상황에 맞게 변형하여 테스트해보시고 사용하시기 바랍니다.

 

 

 

 

728x90
반응형