[logback-user] Filtering "unknown" mdc discriminator events
Fred Toth
ftoth at synernet.com
Sat Sep 22 18:16:20 CEST 2012
Hi,
This has been written about before in this list, and I thought it would
be easy, but I'm getting nowhere. Can anyone suggest what I'm doing
wrong? I can confirm that my filter code is running (I see the print
statements) but no matter what I return, I still end up with a log like
"unknown/batchqc-<timestamp>" containing plenty of log data.
I would like to eliminate these logs completely, and write logs using
this sifter only when articlePath is set.
The status listener is reporting:
12:03:35,652 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter at 25:37
- no applicable action for [OnMismatch], current pattern is
[[configuration][appender][filter][evaluator][OnMismatch]]
12:03:35,652 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter at 26:34
- no applicable action for [OnMatch], current pattern is
[[configuration][appender][filter][evaluator][OnMatch]]
What am I missing?
Config:
<configuration>
<statusListener
class="ch.qos.logback.core.status.OnConsoleStatusListener"/>
<timestamp key="bySecond" datePattern="yyyy-MM-dd-HH-mm-ss" />
<timestamp key="byDate" datePattern="yyyy-MM-dd" />
<appender name="ARTICLESIFT"
class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>articlePath</key>
<defaultValue>unknown</defaultValue>
</discriminator>
<sift>
<appender name="ARTICLESIFT-APPENDER"
class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator
class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">
<expression>
System.out.println("MDC: " + mdc + " " + mdc.get("articlePath"));
if (mdc == null
|| mdc.get("articlePath") == null
|| ((String)mdc.get("articlePath")).contains("unknown"))
return false;
return true;
</expression>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
</evaluator>
</filter>
<file>${articlePath}/batchqc-${bySecond}.log</file>
<append>false</append>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level
%logger{0} - %msg%n
</pattern>
</encoder>
</appender>
</sift>
</appender>
<appender name="TSFILE" class="ch.qos.logback.core.FileAppender">
<file>logs/batchqc-${byDate}.log</file>
<append>true</append>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{0} -
%msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="TSFILE" />
<appender-ref ref="ARTICLESIFT" />
</root>
</configuration>
Thanks,
Fred
More information about the Logback-user
mailing list