log4j2:针对不同触发策略的不同过渡策略?

时间:2019-05-14 17:12:19

标签: log4j2

我们的应用程序使用log4j2进行记录。我们有一个日志文件夹,我们称之为LOGPATH。在下面,我们还有另一个文件夹LOGBACKUPPATH,其中包含YYYY-MM-DD_hh-mm-ss之类的文件夹。在我们的应用程序中,我们定义了一些属性来构建这些文件夹名称。

<Property name = "LOGBACKUPPATH">${sys:server.logarchivedir}/${sys:server.logarchive.timestamp}/</Property>
<Property name = "LOGPATH">${sys:server.logdir}</Property>

<RollingRandomAccessFile name="messages"
    fileName="${LOGPATH}/messages.log" 
    filePattern="${LOGBACKUPPATH}//messages-$${date:yyyy-MM-dd-HH-mm-ss}.log.zip">
    <Policies>
        <OnStartupTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="${DefMaxFileSize}" />
    </Policies>
</RollingRandomAccessFile>

由于OnStartupTriggeringPolicy,log4j2会将上一次运行的所有日志移动并压缩到我们为LOGBACKUPPATH设置的实现路径中。此路径包含从上次运行的时间开始获取的时间戳。我们知道这一次是因为我们在初始化log4j2之前检查了一个旧的日志文件。

因此,这部分处理旧文件。

由于我们也有SizeBasedTriggeringPolicy,因此我们可以从当前运行中存档新的日志文件,以便节省一些磁盘空间并防止超载。但是,由于这两个策略共享一个过渡策略,因此当前运行的日志与上一次运行的日志最终位于同一存档文件夹中。最好有两个不同的旧文件夹和旧文件夹,但据我所知log4j2并没有提供该文件夹。

在log4j1的过去,没有压缩存档选项,因此我们自己滚动,仅在启动时触发。但是log4j2似乎不再为此提供钩子。

是否还有另一种方法来分隔存档文件夹,以便OnStartupTriggeringPolicySizeBasedTriggeringPolicy可以共存?

如果我们能够以某种方式设置另一个存档名称并根据当前运行的开始时间对其进行定义,那么我如何确保下一个运行为其OnStartupTriggeringPolicy使用此确切的文件夹名称?

0 个答案:

没有答案