我编写的代码应该在代码中编辑我的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中?
根据这个页面 -
有一个删除操作,但我不确定它是否是正确使用的,或者即使它应该放在Action [] CustomActions中的动作类型......
在该删除操作中,您可以指定路径条件,并且在路径条件下,它具有此方法 -
accept(Path baseDir, Path relativePath, BasicFileAttributes attrs)
这将允许您指定基本目录,relativePath(也许这是我将信息放在IfFileName中的位置?)和BasicFileAttributes,其中一个属性最后修改,以便似乎适合....
有没有人知道我是否在这里正确的轨道,这将工作,或者甚至可以在不构建新配置或编辑xml文件的情况下完成此任务?