Log4j2配置DefaultMessageListenerContainer日志输出到自定义文件失效
配置失效原因
你的配置存在3处问题,导致规则未生效:
- 类名拼写错误:配置中写的
org.springframework.jms.listener.DeafultMessageListenerContainer存在拼写错误,正确类名是org.springframework.jms.listener.DefaultMessageListenerContainer,Default被错写为Deafult,Log4j2无法匹配到目标类的日志,规则完全不触发。 - XML语法错误:
<AppenderRef ref="customErrorFile">标签未闭合,不符合XML语法规范,Log4j2解析配置时会直接跳过这段无效内容。 - 未关闭日志继承:Log4j2默认开启日志向上传递(additivity默认为true),就算配置命中,日志也会同步流转到Root Logger绑定的控制台Appender,导致控制台依然打印日志。
修正方案
将原有Logger配置替换为如下内容:
<Logger name="org.springframework.jms.listener.DefaultMessageListenerContainer" level="error" additivity="false"> <AppenderRef ref="customErrorFile" /> </Logger>
配置说明:
- 修正了类名拼写错误,保证Logger能精准匹配到
DefaultMessageListenerContainer类的日志 - 补全了AppenderRef标签的闭合标记,修复XML语法问题
- 增加
additivity="false"配置,关闭该Logger的日志向上传递逻辑,日志只会输出到指定的customErrorFileAppender,不会再打印到控制台
注意:请提前确认customErrorFile对应的Appender已经在Log4j2配置的<Appenders>节点中正确定义,且配置的日志文件路径对应用进程有写入权限。
内容的提问来源于stack exchange,提问作者Sagar Joon
相关产品推荐
相关产品推荐

