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

Wildfly-Swarm中Periodic-Rotating-File-Handler的YAML配置失效排查

解决WildFly Swarm日志配置的两个问题

你的配置存在两处关键问题导致日志行为不符合预期,下面是修正后的完整配置和详细说明:

修正后的日志配置

swarm:
  logging:
    root-logger:
      level: DEBUG
      handlers:
        - DEBUGFILE
        - CONSOLE
    periodic-rotating-file-handlers:
      DEBUGFILE:
        level: DEBUG
        enabled: true
        autoflush: true
        named-formatter: MY_PATTERN
        file:
          path: logs/debugfile.log
          suffix: .yyyy-MM-dd
    console-handlers:
      CONSOLE:
        level: DEBUG
        named-formatter: MY_PATTERN
    pattern-formatters:
      MY_PATTERN:
        pattern: "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p (%t) [%c] %s%e%n"
    loggers:
      de.myname:
        level: DEBUG

问题原因与修复解释

1. debugfile.log为空的问题

你之前把root-logger放在了logging-profiles节点下,但WildFly Swarm默认不会启用日志配置文件(logging profiles),除非你通过系统属性或其他方式显式指定使用该profile。这就导致你的自定义root logger完全没生效,DEBUGFILE处理器根本没被关联到任何活跃的日志记录器上,所以文件虽然被创建,但没有日志写入。

修复方法:将root-logger直接移到logging根节点下,这样它就会成为全局默认的root logger,所有日志都会经过它指定的处理器。

2. CONSOLE始终输出INFO级别的问题

WildFly Swarm的默认root logger级别是INFO,而你之前的自定义root logger在未启用的logging profile里,所以CONSOLE处理器实际上使用的是默认root logger的INFO级别限制。同时你单独配置的de.myname logger级别为DEBUG,所以只有这个包下的类能输出DEBUG日志。

修复后:

  • 全局root logger级别设为DEBUG,确保所有日志(包括非de.myname包的)都会被收集到DEBUG级别
  • CONSOLE处理器的级别也设为DEBUG,确保它能输出所有收集到的DEBUG及以上级别的日志

额外注意事项

  • 日志路径的logs目录:虽然你提到文件已创建,但如果目录不存在,部分情况下WildFly Swarm可能会静默失败(不过通常它会自动创建目录,这里仅作提醒)
  • 双重过滤机制:logger的level决定收集哪些级别的日志,处理器的level决定输出哪些级别的日志,只有两者都满足的日志才会被最终输出,所以两者的配置都要符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:21:17