'Logback filter by class name

I am trying to create a class name filter in Logback, looking to exclude logs line from certain package names.

This is my logback-spring.xml. In this example I am trying to exclue every line from a stacktrack which could be from Undertow.

<configuration scan="true" scanPeriod="30 seconds" debug="true">

  <property name="DEFAULT_PATTERN"
    value="[%thread][%-5level][%d{yyyy-MM-dd HH:mm:ss.SSS}][%logger{40}] - %msg%n"/>

  <appender name="ConsoleAppender" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
      <evaluators>
        <evaluator>
          <expression>logger.equals("io.undertow")</expression>
        </evaluator>
        <OnMismatch>NEUTRAL</OnMismatch>
        <OnMatch>DENY</OnMatch>
      </evaluators>
    </filter>
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>${DEFAULT_PATTERN}</Pattern>
    </layout>
  </appender>
  <root level="INFO">
    <appender-ref ref="ConsoleAppender"/>
  </root>

</configuration>

But, when I start the Spring Boot application, it stops itself.

Putting the flag debug=true in the XML, I've got this message:

16:44:37,859 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeTask scanning period to 30 seconds
16:44:37,867 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
16:44:37,867 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [ConsoleAppender]
16:44:37,878 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@8:19 - no applicable action for [evaluators], current ElementPath  is [[configuration][appender][filter][evaluators]]
16:44:37,879 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.boolex.JaninoEventEvaluator] for [evaluator] property
16:44:37,886 |-WARN in Logger[org.springframework.boot.context.logging.ClasspathLoggingApplicationListener] - No appenders present in context [default] for logger [org.springframework.boot.context.logging.ClasspathLoggingApplicationListener].
Disconnected from the target VM, address: '127.0.0.1:43411', transport: 'socket'

What am I doing wrong there? If I disable the filter, the application starts normally.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source