【问题标题】:Log4J2 (2.6) - Delete logs automaticallyLog4J2 (2.6) - 自动删除日志
【发布时间】:2018-02-24 11:22:28
【问题描述】:

我目前正在尝试在新的 Log4j2 (2.6) 中运行删除操作。 可以删除带有预配置条件的日志文件,例如文件大小或年龄。 这方面的信息在网络上确实很少见,但足以以某种方式对其进行配置。 无论如何,它不适合我。

我们正在使用一个属性文件来配置我们的 Log4J2。 写作完全符合预期,只有删除没有。

所以,这是我们的属性文件的 sn-p:

主日志文件

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/)。

在第三行,“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...

然后我想到了可能,该软件可能无权删除该文件夹中的某些内容。我授予文件权限和对所有内容的访问权限,就像写入、读取、删除一样。 毕竟,我可以说,属性配置似乎很好,因为没有错误。 但这只是行不通。

啊,最后但同样重要的是,我还发现行尾的空格会导致错误。 没有空格……这根本不是问题。

有人知道它为什么不工作吗? 我感谢任何帮助或想法。 非常感谢。

祝你有美好的一天,

提姆

【问题讨论】:

  • <DefaultRolloverStrategy max="3"/> 是您可能正在寻找的东西吗?
  • 将内部 Log4j2 状态日志配置为 TRACE 可能很有用。这将显示翻转到控制台期间发生的情况的详细信息。
  • 您好,感谢您的回答。我已经将其配置为跟踪。这首先向我显示了一些配置错误,当我配置了一些错误的值时,例如:appender.rolling.strategy.action.condition.age = 1(注意没有像月,日这样的有效规范)。这会被记录下来。如果我配置它,故障就会消失。这就是为什么我得出结论,它的配置是正确的。我必须监督其他事情。
  • @nullpointer:你什么意思?我看到它有点xml-config,对吧?我发现:尝试添加默认滚动策略` `,每天只允许3个文件,使用你想要的任何数字。但这不是我想要的。实际上,如果它清除所有或一个日志文件,我会很高兴,但没有任何反应。没有痕迹,没有错误,什么都没有。

标签: java logging properties log4j log4j2


【解决方案1】:

我已经配置了RollingFileAppender 类似于你的配置。我认为您应该在属性中修改两点以使其正常工作-

appender.rolling.policies.time.interval = 1

appender.rolling.strategy.action.PathConditions.glob = *.zip

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2021-10-18
    • 2019-04-18
    相关资源
    最近更新 更多