编辑Log4j2默认翻转策略的代码中的删除操作

时间:2017-06-16 13:46:17

标签: logging log4j2 rollover

我编写的代码应该在代码中编辑我的RollingFileAppenders DefaultRolloverStrategy -

DefaultRolloverStrategy newStrategy = DefaultRolloverStrategy.createStrategy(Integer.toString(max), "1", "max", 
            "2", null, true, config);
    Appender appender = config.getAppender("RollingFile");
    ((RollingFileAppender) appender).getManager().setRolloverStrategy(newStrategy);

但是,因为在我的xml文件中,我在RollingFileAppender下有这个 -

<Delete basePath="logs/">
    <IfFileName glob="logs/${baseFileName}-*.log.gz" />
    <IfLastModified age="2d" />
</Delete>

要删除2天以上的日志文件,我需要一些方法将删除部分应用到DefaultRollOverStrategy,然后再将其添加到appender ...

查看createStrategy的API,其方法调用如下所示 -

public static DefaultRolloverStrategy createStrategy(@PluginAttribute(value="max")
                                  String max,
                                  @PluginAttribute(value="min")
                                  String min,
                                 @PluginAttribute(value="fileIndex")
                                 String fileIndex,
                                 @PluginAttribute(value="compressionLevel")
                                 String compressionLevelStr,
                                 @PluginElement(value="Actions")
                                 Action[] customActions,
       @PluginAttribute(value="stopCustomActionsOnError",defaultBoolean=true)
                                  boolean stopCustomActionsOnError,
                                  @PluginConfiguration
                                  Configuration config)

我想你可能以某种方式创建了一个删除操作并将其添加到Action数组customActions中?

根据这个页面 -

https://logging.apache.org/log4j/2.x/log4j-core/apidocs/org/apache/logging/log4j/core/appender/rolling/action/DeleteAction.html

有一个删除操作,但我不确定它是否是正确使用的,或者即使它应该放在Action [] CustomActions中的动作类型......

在该删除操作中,您可以指定路径条件,并且在路径条件下,它具有此方法 -

accept(Path baseDir, Path relativePath, BasicFileAttributes attrs)

这将允许您指定基本目录,relativePath(也许这是我将信息放在IfFileName中的位置?)和BasicFileAttributes,其中一个属性最后修改,以便似乎适合....

有没有人知道我是否在这里正确的轨道,这将工作,或者甚至可以在不构建新配置或编辑xml文件的情况下完成此任务?

0 个答案:

没有答案