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 이라는 문자열이 포함되면 출력을 하지 않게 됩니다.
댓글