Programing/JAVA

Logback 특정 문자열 포함하는 메시지 제외 설정, Filter 사용법

리커니 2018. 11. 2.
반응형

Logback 특정 문자열 포함하는 메시지 제외 설정, Filter 사용법

 

지난번 포스팅에서는 Logback을 설정하는 방법을 알아보았습니다.

 

Link : Springboot logback 설정하기, 콘솔 및 파일저장

 

이번 포스팅에서는 로그 메시지 중에 특정 문자열이 있을 경우 제외하는 방법을 알아보겠습니다.

 

저같은 경우에는 기존에는 원하는 로그만 딱딱 찍혔지만 L4를 연결 후

ping 을 체크하는 로그가 INFO 레벨로 3초에 한번씩 찍혀 제외를 하게 되었습니다.

 

참고 사이트 : https://logback.qos.ch/manual/filters.html

 

특정 문자열을 제외 하는 필터 클래스를 생성한 후

해당 클래스를 Logback appender 태그내 filter 태그로 추가 해주시면 됩니다.

 

그럼 해당 클래스 부터 보도록 하겠습니다.

 

 

 

[ Logback Filter Class ]

public class LogbackFilter extends Filter<ILoggingEvent>{
    @Override
    public FilterReply decide(ILoggingEvent event) {    
        if (event.getMessage().contains("ping")) {
            return FilterReply.DENY;
        }else{
            return FilterReply.ACCEPT;
        }
    }
}

 

logback Filter 클래스를 상속받아 그 내의 decide 메소드를 Override 합니다.

그리고 이벤트 메시지 중에서 ping 문자열을 포함하고 있다면 Deny, 아니라면 Accept로

리턴을 해주죠.

 

그 다음은 Logback 설정파일인 logback-sping.xml 로 이동해 append 내에 해당 필터 클래스를 필터 태그로 추가 합니다. (아래 코드 2Link 참고)

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="kr.co.neighbor21.ecall.geon.collection.config.LogbackFilter"/>
    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>[%d{yyyy-MM-dd}] [%d{HH:mm:ss.SSS}] [%p] %m%n</pattern>
    </layout>
</appender>

 

이렇게 설정하면, 로그 메시지 중에 ping 이라는 문자열이 포함되면 출력을 하지 않게 됩니다.

 

반응형

댓글

💲 추천 글