gpt4 book ai didi

java - 强制Log4J每天创建一个新文件(可能为空)

转载 作者:行者123 更新时间:2023-12-04 01:07:46 26 4
gpt4 key购买 nike

我将log4j配置为使用DailyRollingFileAppenders进行写入,以将日志条目写入一些不同的文件。
在这种情况下,这些日志之一是特殊的,它是所有其他日志的摘要,并且会警告其阈值(而不是其他日志信息)。

这背后的想法很简单:如果一天没有任何条目,那么一切都很好,并且无需查看详细日志。

Log4J在写入当天的第一条记录时会滚动该文件-因此,如果打开该日志并且当天没有写入任何条目,则该日志将显示已存在数日的条目。

有没有一种方法可以强制log4j每天在不需要日志输入的情况下滚动文件?还是在启动时滚动?

编辑:这是属性:

**snipped**
log4j.appender.empty=org.apache.log4j.DailyRollingFileAppender
log4j.appender.empty.MaxBackups=30
log4j.appender.empty.Append=true
log4j.appender.empty.File=/some/dir/shouldBeEmpty.txt
log4j.appender.empty.layout=org.apache.log4j.PatternLayout
log4j.appender.empty.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
**snipped**


可以肯定的是:我知道,我可以在每晚启动时调用默认警告,这将滚动该文件。但是问题是,是否有可能在不进行日志记录的情况下滚动。

最佳答案

您可以使用两个简单的类java.util.Propertiesorg.apache.log4j.PropertyConfigurator从代码中设置log4j配置。因此,首先将整个log4j数据(问题所提供的内容)加载到java.util.Properties中,然后在org.apache.log4j.PropertyConfigurator中进行设置。因此,您可以做的是,可以从自己的log4j.appender.file.File中获取值。

例:

String fileName = "//some//dir//" + {DD_MM_YY} + ".txt";`
log4jData += "log4j.appender.empty.File=" + fileName;`


现在,如果您可以通过代码设置一次,则可以根据需要设置多次。创建一个将负责两件事的工作人员:


如果应用程序启动/重新启动,则设置所需的log4j属性,并
在一段时间(例如24小时)后,配置新的log4j属性(基于您的数据)。


希望它会起作用。对不起,我的英语不好。

关于java - 强制Log4J每天创建一个新文件(可能为空),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28084893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com