
Hello "Buzzterrier", You probably meant to set the class name for the EMAIL appender to SMTPAppender but since you used ConsoleAppender instead, joran is incapable for injecting an evaluator into ConsoleAppender because ConsoleAppender does not support evaluators. Joran should have complained about not being able to inject the evaluator. If it has not, it's a bug. Changing the class of the appender named EMAIL from ConsoleAppender to SMTPAppender should fix the problem. As for your question on the difference between filters and evaluators, filters are supported by all appenders and are used to determine whether to drop an logging event or not. An appender can have zero or more filters. On the other hand, evaluators are used to check whether a special event has occurred. In the case of SMTPAppender, evaluators are used to trigger an outgoing email. SMTPAppender requires one and only one evaluator. If you do not supply one, it defaults to on OnErrorEvaluator. BTW, you can add filters SMTPAppender to drop certain events from entering SMTPAppender internal events. However, it it still SMTPAppender's evaluator which will determine when to trigger an email. HTH, On 19/05/2010 7:20 PM, buzzterrier wrote:
I am trying to setup a simple evaluator for an appender. I want certain debug messages to be emailed, while the default will just go to stdout.
Here is my context (note for this test both appenders output to the console, although one is named EMAIL):
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender>
<appender name="EMAIL" class="ch.qos.logback.core.ConsoleAppender">
<evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator"> <marker>NOTIFY_ADMIN</marker> </evaluator>
<encoder> <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern> </encoder>
</appender>
<root> <level value="debug" /> <appender-ref ref="STDOUT" /> <appender-ref ref="EMAIL" /> </root> </configuration>
The context gives the following error: 07:30:14,121 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@19:72 - no applicable action for [evaluator], current pattern is [[configuration][appender][evaluator]] 07:30:14,121 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@20:15 - no applicable action for [marker], current pattern is [[configuration][appender][evaluator][marker]]
Any ideas?
Also, can you describe the difference between and evaluator and a filter?
----- Buzzterrier
http://buzzterrier.blogspot.com/ View my blog: Ordinary Average Developer...