【发布时间】:2019-02-08 20:28:55
【问题描述】:
应用程序每次运行时如何创建新的日志文件?
我想以任何方式保留以前的日志。例如,我更愿意按创建时间和日期来命名每个新日志文件。否则,我同意将旧的日志文件备份到日期和时间文件名中。
很遗憾,我在这里看不到合适的政策和/或触发器:http://logback.qos.ch/manual/appenders.html
更新
我大致按照“复制”中所说的那样制作
<appender name="ROUTINEAPPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/routine.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/routine%d{yyyyMMdd}%d{HHmmss,aux}.log</fileNamePattern>
<TimeBasedFileNamingAndTriggeringPolicy class="com.inthemoon.toolkit.StartupTimeBasedTriggeringPolicy" />
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} - %C{0} - %msg%n</pattern>
</encoder>
</appender>
但我的班级 com.inthemoon.toolkit.StartupTimeBasedTriggeringPolicy 从未被调用过。我在start() 方法中设置了断点,但它从未引发过。
此外,不会发生滚动。日志文件已创建,但其名称始终为 routine.log。
我也不明白,参数file和filenamePattern应该如何共存。
更新 2
我已经修复了UPDATE 1 类引用,但仍然没有我需要的东西。在给定的解决方案中,日期时间被插入到 OLD 日志文件名中。例如,如果我在 2013 年运行程序,它会创建 routine.log。然后我等了一年,在2014年运行程序。新的日志文件将被创建并命名为routine.log,而OLD 2013日志将被放入routine2014XXXXXXXXXX.log,这绝对无关紧要。
每次程序启动时我都需要创建一个新文件,并用日期时间戳标记这个文件。
【问题讨论】: