Java 在Log4j2中,使用RollingFile appender,如何向滚动文件名添加唯一id?
我使用的是一个RollingFile Appender,具有时间(每日)和大小触发策略。 filePattern(用于在滚动时重命名文件)包含:Java 在Log4j2中,使用RollingFile appender,如何向滚动文件名添加唯一id?,java,log4j2,rollingfileappender,Java,Log4j2,Rollingfileappender,我使用的是一个RollingFile Appender,具有时间(每日)和大小触发策略。 filePattern(用于在滚动时重命名文件)包含: filePattern="app-${sys:node}-%d{yyyyMMdd}-%i" 我想在滚动文件名中添加一个随机id(最好是uuid)。 通常情况下,日期模式和整数计数器足以唯一标识文件…但在我的情况下,日志会通过ftp自动拾取(如果成功传输,则会被删除)。由于文件删除,最终可能会出现重复文件(在ftp上,而不是本地)。。。因为%i计数器
filePattern="app-${sys:node}-%d{yyyyMMdd}-%i"
我想在滚动文件名中添加一个随机id(最好是uuid)。
通常情况下,日期模式和整数计数器足以唯一标识文件…但在我的情况下,日志会通过ftp自动拾取(如果成功传输,则会被删除)。由于文件删除,最终可能会出现重复文件(在ftp上,而不是本地)。。。因为%i计数器基于本地已经存在的文件
例如:
- app-20180205-1.log
- app-20180205-2.log
- app-20180205-3.log
有解决方案吗?您可以使用更具体的日期时间文件模式和更具体的时间分辨率,而不是UUID,如下所示:
filePattern="logs/log4j2-demo-%d{yyyy-MM-dd-HH-mm-ss}-%i.log
当您的时间/触发器策略得到满足时,它将创建一个新文件,其中包含更具体的日期-时间戳,该日期-时间戳应根据您指定的时间分辨率始终是唯一的。可能更容易删除一整天,只是为了防止发生这种情况。。。