[logback-user] Evaluators and Markers - no applicable action

Ceki Gülcü ceki at qos.ch
Wed May 19 20:40:51 CEST 2010


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 at 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 at 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...



More information about the Logback-user mailing list