You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Log4j2多Logger配置问题:XML转Properties后非Root Logger失效

Log4j2 Properties配置多Logger的正确姿势

你遇到的问题其实很典型——在Properties配置里重复用了同一个Logger标识,导致前面的Logger配置被后面的覆盖,最终只有Root Logger或者最后一个被定义的Logger生效。咱们一步步来解决:

先看你之前的错误配置(问题根源)

logger.rolling.name = org.apache.struts2
logger.rolling.level = warn
logger.rolling.name = org.springframework
logger.rolling.level = warn
rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.rolling.ref = RollingFile
rootLogger.appenderRef.rolling.fileName = ${filename}

这里的问题在于两次使用了logger.rolling作为前缀,第二次的logger.rolling.name和logger.rolling.level直接覆盖了第一次的配置,相当于你只定义了org.springframework这一个自定义Logger,而且还没配置它的Appender和additivity属性,自然看不到预期的效果。

正确的配置方式

Log4j2的Properties格式要求每个自定义Logger必须有唯一的标识前缀,同时要完整配置它的级别、additivity(是否向上传递日志)以及关联的Appender,对应你原来的XML配置,正确的Properties写法如下:

# 1. 配置Apache Struts2的Logger,用唯一标识"struts2"
logger.struts2.name = org.apache.struts2
logger.struts2.level = warn
logger.struts2.additivity = false
logger.struts2.appenderRef.stdout.ref = STDOUT
logger.struts2.appenderRef.rolling.ref = RollingFile

# 2. 配置Spring的Logger,用唯一标识"spring"
logger.spring.name = org.springframework
logger.spring.level = warn
logger.spring.additivity = false
logger.spring.appenderRef.stdout.ref = STDOUT
logger.spring.appenderRef.rolling.ref = RollingFile

# 3. 配置Root Logger
rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.rolling.ref = RollingFile

关键注意点

  • 唯一标识:每个自定义Logger的前缀(比如logger.struts2里的struts2)不能重复,这是区分不同Logger的核心。
  • additivity属性:一定要设置additivity = false,和你XML里的additivity="false"对应,避免日志同时被当前Logger和Root Logger重复输出。
  • Appender关联:每个Logger都要显式指定要使用的Appender,和XML里的<AppenderRef>标签对应,否则日志不会输出到你指定的控制台或文件。

另外,如果你还没配置STDOUT和RollingFile这两个Appender的具体参数(比如RollingFile的滚动策略、文件名等),需要在Properties文件里补充这些Appender的配置,确保${filename}变量已经正确定义。

内容的提问来源于stack exchange,提问作者user6332430

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:48:36