【发布时间】:2010-11-29 11:51:00
【问题描述】:
例如,我第一次运行应用程序时(或在我清除 /logs 目录后立即),我希望 log4j 将应用程序的日志写入一个名为 log.0 的文件。然后,我退出应用程序并重新启动它,我希望将日志写入 log.1。以此类推。
我想将它保存在配置文件中,但如果我不能,我想我总是可以在设置 log4j 时在我的应用程序中这样做。
这可能吗?如果有,怎么做?
【问题讨论】:
例如,我第一次运行应用程序时(或在我清除 /logs 目录后立即),我希望 log4j 将应用程序的日志写入一个名为 log.0 的文件。然后,我退出应用程序并重新启动它,我希望将日志写入 log.1。以此类推。
我想将它保存在配置文件中,但如果我不能,我想我总是可以在设置 log4j 时在我的应用程序中这样做。
这可能吗?如果有,怎么做?
【问题讨论】:
也许这就是你要找的东西
http://veerasundar.com/blog/2009/08/how-to-create-a-new-log-file-for-each-time-the-application-runs/
**编辑:**我还有一个解决方案! 但不知道它是否有效,但你可以尝试 http://www.mail-archive.com/log4cxx-user@logging.apache.org/msg02132.html
【讨论】:
使用 log4j2 的解决方案:
<RollingFile name="RollingFile" fileName="${log-path}/GScraper.log"
filePattern="${log-path}/GScraper_%d{yyyy-MM-dd}_%i.log">
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
<pattern>%level\t%d{yyyy-MM-dd HH:mm:ss} %c: %m%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="32 MB" />
<OnStartupTriggeringPolicy/>
</Policies>
</RollingFile>
注意 filePattern 中的 OnStartupTriggeringPolicy 和 %i。这样,Log4j 将在您每次运行应用程序时创建带有索引的新日志文件。
【讨论】:
请参阅uniquely named files (by timestamp) 上的 logback 手册。
【讨论】:
在我的脑海中,我认为使用 Log4j 是不可能的。也许当您关闭应用程序时,您可以重命名 .log 文件,以便下次启动时创建一个新的日志文件。
【讨论】: