log4j2.xml 파일내 RegexFilter시 mdc 값에 대해서도 필터되는 방법이 있나요?
- 작성자 :
- 박*미
- 작성일 :
- 2017-05-12 12:25:14
- 조회수 :
- 3,012
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
log4j2.xml 파일내 RegexFilter시 결과값에 대해서만 필터가 되던데
mdc 값에 대해서도 필터되는 방법이 있나요?
아래는 저의 log4j2.xml파일 설정 내용입니다.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d [%X{ip}][%X{id}][%X{name}][%X{type}] %5p [%c] %m%n" />
<RegexFilter regex=".*필터내용.*" onMatch="ACCEPT" onMismatch="DENY" useRawMsg="true"/>
</Console>
<RollingFile name="debugLog" fileName="/usr/local/tomcat9/logs/debug.log"
filePattern="/usr/local/tomcat9/logs/debug.log.%d{yyyy-MM-dd}"
append="true">
<RegexFilter regex=".*\\[|\\].*" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d [%X{ip}][%X{id}][%X{name}][%X{type}] %5p [%c] %m%n" />
<Policies>
<!-- interval(default 1)이므로 1초 간격으로 rolling 수행 -->
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
<RollingFile name="errorLog" fileName="/usr/local/tomcat9/logs/error.log"
filePattern="/usr/local/tomcat9/logs/error.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout pattern="%d [%X{ip}][%X{id}][%X{name}][%X{type}] %5p [%c] %m%n" />
<Policies>
<!-- interval(default 1)이므로 1초 간격으로 rolling 수행 -->
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="java.sql" level="DEBUG" additivity="false">
<AppenderRef ref="debugLog" />
<AppenderRef ref="console" />
</Logger>
<Logger name="juneinter.com.scheduler" level="ERROR" additivity="false">
<AppenderRef ref="errorLog" />
</Logger>
<!-- hibernate log END -->
<Root level="ERROR">
<AppenderRef ref="console" />
<AppenderRef ref="errorLog" />
</Root>
</Loggers>
</Configuration>
mdc 값에 대해서도 필터되는 방법이 있나요?
아래는 저의 log4j2.xml파일 설정 내용입니다.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="%d [%X{ip}][%X{id}][%X{name}][%X{type}] %5p [%c] %m%n" />
<RegexFilter regex=".*필터내용.*" onMatch="ACCEPT" onMismatch="DENY" useRawMsg="true"/>
</Console>
<RollingFile name="debugLog" fileName="/usr/local/tomcat9/logs/debug.log"
filePattern="/usr/local/tomcat9/logs/debug.log.%d{yyyy-MM-dd}"
append="true">
<RegexFilter regex=".*\\[|\\].*" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d [%X{ip}][%X{id}][%X{name}][%X{type}] %5p [%c] %m%n" />
<Policies>
<!-- interval(default 1)이므로 1초 간격으로 rolling 수행 -->
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
<RollingFile name="errorLog" fileName="/usr/local/tomcat9/logs/error.log"
filePattern="/usr/local/tomcat9/logs/error.log.%d{yyyy-MM-dd}"
append="true">
<PatternLayout pattern="%d [%X{ip}][%X{id}][%X{name}][%X{type}] %5p [%c] %m%n" />
<Policies>
<!-- interval(default 1)이므로 1초 간격으로 rolling 수행 -->
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="java.sql" level="DEBUG" additivity="false">
<AppenderRef ref="debugLog" />
<AppenderRef ref="console" />
</Logger>
<Logger name="juneinter.com.scheduler" level="ERROR" additivity="false">
<AppenderRef ref="errorLog" />
</Logger>
<!-- hibernate log END -->
<Root level="ERROR">
<AppenderRef ref="console" />
<AppenderRef ref="errorLog" />
</Root>
</Loggers>
</Configuration>
A
안녕하세요.
표준프레임워크 센터입니다.
문의하신 MDC값을 regexfilter값으로 적용이 힘들지 않을까 합니다.
regex값은 regular expression형식이여야 하기에 해석이 되지 않습니다.
굳이 regexfilter만 써야되는 상황이 아니시면 log4j2에서 재공되는 다른 filter를 사용하는 것은 어떠신지요?
예를 듵어 ThreadContextMapFilter 도 좋은 대안이 될 수 있을 듯 합니다.
https://logging.apache.org/log4j/2.0/manual/filters.html#ThreadContextMapFilter
감사합니다.
표준프레임워크 센터입니다.
문의하신 MDC값을 regexfilter값으로 적용이 힘들지 않을까 합니다.
regex값은 regular expression형식이여야 하기에 해석이 되지 않습니다.
굳이 regexfilter만 써야되는 상황이 아니시면 log4j2에서 재공되는 다른 filter를 사용하는 것은 어떠신지요?
예를 듵어 ThreadContextMapFilter 도 좋은 대안이 될 수 있을 듯 합니다.
https://logging.apache.org/log4j/2.0/manual/filters.html#ThreadContextMapFilter
감사합니다.