首页 文章

在Log4j2中,使用RollingFile appender,如何在滚动的文件名中添加唯一的id?

提问于
浏览
1

我正在使用RollingFile Appender同时具有时间(每日)和大小触发策略 . filePattern(用于在翻转时重命名文件)包含:

filePattern="app-${sys:node}-%d{yyyyMMdd}-%i"

我想在滚动的文件名中添加一个随机ID(理想情况是一个uuid) . 通常,日期模式和整数计数器足以唯一标识文件...但在我的情况下,日志会通过ftp自动获取(如果成功传输则会被删除) . 由于文件删除,最终可能会出现重复文件(在ftp上,而不是本地)...因为%i计数器基于本地已存在的文件 .

例如,拥有:

  • app-20180205-1.log

  • app-20180205-2.log

  • app-20180205-3.log

和log4j2当前写的,比方说:/tmp/app.log

如果已经滚动的3个文件通过ftp传输并删除,则在下一次滚动时,我将使用app-20180205-1.log而不是app-20180205-4.log . 这就是我想要避免的 .

有解决方案吗

1 回答

  • 0

    您可以使用更具体的日期时间文件模式而不是UUID,而不是更具体的时间分辨率,如下所示:

    filePattern="logs/log4j2-demo-%d{yyyy-MM-dd-HH-mm-ss}-%i.log
    

    当您的时间/触发器策略满足时,它将创建一个具有此更具体的日期时间戳的新文件,该日期时间戳应始终为您指定的时间分辨率唯一 .

相关问题