配置log4j2.xml报Loggers has no parameter that matches element AppenderRef求助
错误根因
Log4j2的XML配置语法要求,<Loggers>标签下仅允许存在<Logger>(注意你现有配置中<logger>首字母小写,也不符合规范)和<Root>两类子标签,你将<AppenderRef ref="appLog" />直接作为<Loggers>的子节点放置,不符合语法规则,因此触发参数不匹配的报错。
另外你当前的配置还缺少<Appenders>标签段定义ref="appLog"对应的输出源,即使修正上述节点放置问题,也会出现找不到Appender的报错。
修正后完整配置参考
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO"> <!-- 定义所有输出源 --> <Appenders> <!-- 示例为控制台输出,可按需替换为文件、滚动文件等其他输出类型 --> <Console name="appLog" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/> </Console> </Appenders> <Loggers> <!-- AppenderRef放在对应Logger节点内部 --> <Logger name="org.springframework" level="WARN"> <AppenderRef ref="appLog" /> </Logger> <Logger name="java.sql" level="ERROR"> <AppenderRef ref="appLog" /> </Logger> <Root level="INFO"> <AppenderRef ref="appLog" /> </Root> </Loggers> </Configuration>
补充说明
如果你原本是想给所有日志统一绑定appLog输出源,仅在<Root>中配置<AppenderRef>即可,所有自定义的<Logger>如果没有单独配置Appender,会默认继承Root的输出配置,无需额外重复声明。
pom.xml中的ojdbc14依赖和本次log4j2报错无关联,无需调整。
内容的提问来源于stack exchange,提问作者Capuline
相关产品推荐
相关产品推荐

