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

Log4j2配置中RollingFile Appender不生效及配置规则咨询

问题解答

是的,必须将Appender通过<appender-ref>关联到<Loggers>块中的Logger(包括Root Logger),日志才会输出到对应的文件。

Log4j2的配置逻辑很明确:

  • <Appenders>块只是定义日志输出的规则(比如文件路径、滚动策略、日志格式),相当于提前准备好“日志容器”;
  • <Loggers>块负责指定哪些日志(按包名/类名划分的Logger)要把日志发送到哪些“容器”里。如果某个Appender没有被任何Logger引用,它就不会被启用,自然不会生成日志文件。

看你的配置,第二个Appendername="DATACAPTURE"对应的test2.log没有日志,核心原因就是你在<Loggers>里完全没引用它。

修复方案

你可以根据需求选择以下两种方式之一:

方式1:让Root Logger同时输出到两个Appender

修改<Root>节点,添加对DATACAPTURE的引用:

<Root level="info">
    <AppenderRef ref="dataCapture" />
    <AppenderRef ref="DATACAPTURE" />
</Root>

这样所有符合info级别及以上的日志,会同时输出到test1.log和test2.log。

方式2:给特定Logger关联第二个Appender

比如如果想让com.rest.db.fetch的日志同时输出到两个文件,修改对应的logger节点:

<logger name="com.rest.db.fetch" level="info" additivity="false">
    <appender-ref ref="dataCapture" />
    <appender-ref ref="DATACAPTURE" />
</logger>

额外注意点

你的配置里两个RollingFile的filePattern属性末尾多了一个多余的双引号(filePattern="${LOG_DIR}/test1.%i.log.gz""),这会导致配置解析报错,记得删掉多余的引号,改成:

filePattern="${LOG_DIR}/test1.%i.log.gz"

和

filePattern="${LOG_DIR}/test2.%i.log.gz"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:42:15