我目前正在尝试在新的Log4j2(2.6)中运行Delete Action。 可以使用预先配置的条件(如文件大小或年龄)删除日志文件。 有关这方面的信息在网上很少见,但足以配置它。 无论如何,它对我不起作用。
我们正在使用属性文件来配置Log4J2。 写作完全符合预期,只有删除不会。
所以,这是我们的属性文件的片段:
appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${filename}
appender.rolling.filePattern = log/%d{yyyyMMdd}_xxxlog.zip
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %c{1}:%L - %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval = 2m
appender.rolling.policies.time.modulate = true
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.action.type = Delete
appender.rolling.strategy.action.basepath = /log
appender.rolling.strategy.action.maxdepth = 1
appender.rolling.strategy.action.condition.type = IfLastModified
appender.rolling.strategy.action.condition.age = 1D
appender.rolling.strategy.action.PathConditions.type = IfFileName
appender.rolling.strategy.action.PathConditions.glob = *.log
All starts with the line: **appender.rolling.strategy.action.type = Delete**
接下来是基道。在这里,我尝试了多个选项,如绝对路径或相对路径。 我也试过它,有没有开始和结束斜线...一些尝试导致控制台出错,所以至少“/ log”似乎是正确的方法(也可以使用/ log /)。 / p>
在第三行,“appender.rolling.strategy.action.maxdepth = 1”我尝试了一些更多的值。只是为了确定,这不是问题所在。所有日志文件都在根目录中,因此1似乎是正确的。
下一行: appender.rolling.strategy.action.condition.type = IfLastModified
我只是查看代码,在它没有按预期工作之后,只是为了绝对肯定,有一个函数IfLastModified。它就在那里,在控制台中我可以确认,它被称为“工作”。
下一步: appender.rolling.strategy.action.condition.age = 1D 在这里我也尝试了多种选择。 1 m,1 D ...当然,我在目录中复制了旧日志文件,这些日志文件超过1分钟和/或超过1天。
appender.rolling.strategy.action.PathConditions.type = IfFileName
这是条件,您要删除哪些文件。我从* .log开始 但我也尝试了绝对名称logfile.log和许多其他可能性。我有.zip,.log,.txt ......
然后我找到了可能性,软件可能无权删除该文件夹中的内容。我给了文件权限并访问了所有东西,就像写,读,删除一样。 毕竟,我可以说,属性配置似乎没问题,因为没有错误。 但它只是不起作用。
啊,最后但同样重要的是,我还发现一行末尾的空格会导致错误。 没有空格......这根本不是问题。
有人知道它为什么不起作用吗? 我感谢任何帮助或想法。 非常感谢你。
度过愉快的一天,
蒂姆
答案 0 :(得分:0)
我已将RollingFileAppender
配置为与您的配置类似。我认为您应该在属性中修改2点以使其正常工作 -
appender.rolling.policies.time.interval = 1
appender.rolling.strategy.action.PathConditions.glob = *.zip