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

Logback RollingFileAppender随机写入历史日志文件问题求助

Logback偶发写入随机历史日志文件问题排查建议

配置信息

当前使用的Logback配置如下:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${user.dir}/servers/${weblogic.Name}/logs/XYX.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${user.dir}/servers/${weblogic.Name}/logs/XYX.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>50MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <pattern>%date %-3.-3level %replace(%replace(%-28.-28thread){'ExecuteThread: ','th='}){'ACTIVE','A'} | [%X{facadeType} - %X{processId}] | %logger{10} [%file:%line] --> %msg%n</pattern>
    </encoder>
</appender>

<root>
    <level value="INFO"/>
    <appender-ref ref="FILE"/>
</root>

问题现象

配置语法无误,多数场景运行正常,但偶发出现Logback写入随机历史日志文件的情况。例如2023年8月23日11:03起,系统开始写入8月10日创建的日志文件,直至16:04才恢复写入当日正确文件;异常持续时间不定,发作无规律。

已完成排查

  • 查阅Logback发布说明,未发现相关Bug修复或更新记录;
  • 检查配置语法,未发现错误;
  • 更新服务器内核、设备映射等应用相关版本,无改善;
  • 排查发作事件间的关联因素,未找到规律;
  • 检查异常日志文件末尾内容,无关联线索;
  • 查看cron/crontab日志,无错误记录。

进一步排查与修复建议

  1. 确认Logback与WebLogic版本兼容性
    部分WebLogic版本与特定Logback版本存在类加载或逻辑冲突,建议尝试升级Logback至最新稳定版(如1.2.x系列),或降级到与WebLogic官方兼容的版本后测试。

  2. 添加明确的文件锁定策略
    在RollingFileAppender中添加文件锁定配置,避免多线程/多节点场景下文件句柄异常:

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 原有配置 -->
        <lockingPolicy class="ch.qos.logback.core.FileAppender$FallbackLockingPolicy"/>
    </appender>
    

    若为单节点环境,也可尝试NOPLockingPolicy来简化锁逻辑,排除锁机制导致的异常。

  3. 开启Logback内部调试日志
    启用Logback自身的调试模式,追踪文件轮转的详细过程,定位异常发生时的逻辑走向:

    <configuration debug="true">
        <!-- 原有所有配置 -->
        <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/>
    </configuration>
    

    调试日志会输出文件名生成、文件切换的具体步骤,可从中发现异常路径的生成原因。

  4. 检查文件系统与权限稳定性
    若日志目录位于NFS或其他网络挂载文件系统上,可能存在文件系统延迟或inode异常。异常时段可检查:

    • 日志目录的文件权限是否正常;
    • 文件系统的inode使用情况;
    • 应用进程对日志文件的读写权限是否波动。
  5. 固定日志路径排除变量异常
    临时将配置中的${weblogic.Name}和${user.dir}替换为固定路径,测试是否由变量值偶发变更导致路径错误,进而写入历史文件。

  6. 排查进程资源瓶颈
    异常时段检查应用进程的CPU、内存、文件句柄使用情况:

    • 若进程出现内存溢出或文件句柄耗尽,可能导致Logback的文件轮转逻辑执行异常;
    • 查看系统日志中是否有进程卡顿、OOM等相关记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 22:57:50