Hello,
I am trying to create a filter at the appender level that would show all
the messages that contain "Show".
This is my test:
LogManager.getLogger(Test.class).debug("Hide me!");
LogManager.getLogger(Test.class).info("test");
LogManager.getLogger(Test.class).debug("Show me (debug)");
LogManager.getLogger(Test.class).fatal("Hide me! (fatal)");
LogManager.getLogger(Test.class).info("Show me (info)");
LogManager.getLogger(Test.class).info("Hide me!");
And this is the configuration:
<Configuration status="debug" name="MyApp" packages="">
<Appenders>
<SMTP name="Mail" subject="Error Log" to="..." from="..."
smtpProtocol="..." smtpHost="..." smtpPort="..." smtpUsername="..."
smtpPassword="..." bufferSize="1">
<RegexFilter regex=".*Show.*" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
<pattern>%5p %m%n</pattern>
</PatternLayout>
</SMTP>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Mail"/>
</Root>
</Loggers>
</Configuration>
This produces 1 email with:
---------------------------------------
FATAL Hide me! (fatal)
INFO Show me (info)
---------------------------------------
I would expect 2 emails with:
---------------------------------------
INFO test
DEBUG Show me (debug)
---------------------------------------
FATAL Hide me! (fatal)
INFO Show me (info)
---------------------------------------
I also tried this composite filter instead:
<Filters>
<ThresholdFilter level="TRACE" onMatch="NEUTRAL"
onMismatch="DENY" />
<RegexFilter regex=".*Show.*" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
But same result, the DEBUG event is not triggering the appender somehow.
Anyone has an idea how to do this?
Bonus question: Since bufferSize can't be set to 0, is it not possible to
only include the log message itself in the email?
Many thanks!
Ben