我正在使用具有时间(每日)和大小触发策略的RollingFile Appender。 filePattern(用于在翻转时重命名文件)包含:
filePattern="app-${sys:node}-%d{yyyyMMdd}-%i"
我想在滚动的文件名中添加一个随机ID(理想情况是一个uuid)。 通常,日期模式和整数计数器足以唯一标识文件...但在我的情况下,日志会通过ftp自动获取(如果成功传输则会被删除)。由于文件删除,最终可能会有一个重复的文件(在ftp上,而不是在本地)...因为%i计数器是基于本地已经存在的文件。
例如,有:
和log4j2目前正在写信,让我们说:/tmp/app.log
如果已经滚动的3个文件通过ftp传输并删除,则在下一次滚动时,我将使用app-20180205-1.log而不是app-20180205-4.log。这就是我试图避免的。
任何解决方案?
答案 0 :(得分:0)
您可以使用具有更具体时间分辨率的更具体的日期时间文件模式,而不是UUID,如下所示:
filePattern="logs/log4j2-demo-%d{yyyy-MM-dd-HH-mm-ss}-%i.log
当您的时间/触发器策略满足时,它将创建一个新文件,其中包含更具体的日期时间戳,根据您指定的时间分辨率,它应始终是唯一的。