개발/Java

Log4j 특정 로그 표시하지 않게하기 (Filter 사용)

Ridiss 2021. 3. 5. 14:18

log4j level을 DEBUG로 사용중 

파라미터의 경우 console에 표시가 되지 않게 하기위해 사용.

 

 

먼저 LogFilter.java 클래스 파일 생성 

import org.apache.log4j.spi.Filter;
import org.apache.log4j.spi.LoggingEvent;

public class LogFilter extends Filter{
	@Override
	public int decide(LoggingEvent event) {
		if(event.getRenderedMessage().indexOf("Parameters:") > -1) { //로우에 Parameters: 라는 값이 있으면 if문 적용
			event.getLogger().log(event.getLevel(), "");
			return DENY;
		}
		return NEUTRAL;
	}

}

 

 

이후 log4j.xml 파일에서 아래와 같이 수정

	<!-- Appenders -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<param name="Target" value="System.out" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%d %-5p: [%c] - %m %n" />
		</layout>
		<filter class="클래스path.LogFilter" />
	</appender>

 

하게되면 

위 그림과 같이 표시가 되지않는다.