Log4j2中ConsoleAppender无法配置过滤器问题求助
问题解决:Log4j2 ConsoleAppender过滤器配置报错
不需要升级Log4j2 2.17版本,报错原因是配置格式不符合Log4j2的规则,修正配置即可解决。
错误原因
Log4j2的XML配置中,过滤器不能直接使用<ThresholdFilter>、<RegexFilter>这类标签名,直接用类名标签是Log4j 1.x的配置风格,Log4j2不兼容这种写法;同时如果配置文件缺少正确的命名空间,也会导致解析器无法识别<Filters>等元素,抛出“无匹配参数”的错误。
修正后的配置示例
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" xmlns="http://logging.apache.org/log4j/2.0/config"> <Appenders> <Console name="PENTAHOCONSOLE"> <!-- 单个过滤器:通过Filter元素指定type属性声明 --> <Filter type="ThresholdFilter" level="INFO"/> <PatternLayout> <Pattern>%d{ABSOLUTE} %-5p [%c{1}] %m%n</Pattern> </PatternLayout> <!-- 多个过滤器:用Filters容器包裹多个Filter元素 --> <Filters> <Filter type="RegexFilter" regex=".*" onMatch="DENY" onMismatch="DENY"/> </Filters> </Console> </Appenders> <Loggers> <Root level="INFO"> <AppenderRef ref="PENTAHOCONSOLE"/> </Root> </Loggers> </Configuration>
关键注意点
- 所有过滤器必须通过
<Filter>元素声明,通过type属性指定具体的过滤器类型(如ThresholdFilter、RegexFilter)。 - 配置文件的根
<Configuration>元素必须包含Log4j2的官方命名空间http://logging.apache.org/log4j/2.0/config,确保解析器能正确识别配置元素。 - 你的依赖jar包是完整的(包含log4j-core-2.17.1),完全支持上述配置格式。
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

