为什么log4j过滤器在appender中不起作用

问题描述 投票:0回答:1

我创建了一个如下所示的自定义过滤器:

@Plugin(name = "EmptyMessageFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
public class EmptyMessageFilter extends AbstractFilter {

  @PluginFactory
  public static EmptyMessageFilter createFilter() {
    return new EmptyMessageFilter();
  }
...
}

log4j 配置文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Properties>
        <Property name="LOG_PATTERN">
            %d{yyyy-MM-dd HH:mm:ss.SSS}
        </Property>
    </Properties>
    <!-- When filter is here it works -->
    <Filters>
        <EmptyMessageFilter/>
    </Filters>
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        <!-- When filter is here it does not work -->
        <Filters>
            <EmptyMessageFilter/>
        </Filters>  
        </Console>
  
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="ConsoleAppender"/>
        </Root>
    </Loggers>
</Configuration>

当过滤器配置在控制台附加程序内部时,它不起作用,但当它位于附加程序外部时,它可以工作。 根据这个https://logging.apache.org/log4j/2.x/manual/configuration.html#Loggers两者都应该工作。任何提示出了什么问题吗?

java spring-boot log4j log4j2
1个回答
0
投票

我认为

log4j
无法识别xml中的哪个
Filter
类,请尝试在标签中使用扩展Filter的完全限定类名。

© www.soinside.com 2019 - 2024. All rights reserved.