我正在使用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 回答
您可以使用更具体的日期时间文件模式而不是UUID,而不是更具体的时间分辨率,如下所示:
当您的时间/触发器策略满足时,它将创建一个具有此更具体的日期时间戳的新文件,该日期时间戳应始终为您指定的时间分辨率唯一 .