每次应用程序运行时如何创建新的日志文件?
我想以任何方式保留以前的日志.例如,我更愿意按创建时间和日期命名每个新日志文件.否则,我同意将旧日志文件备份到日期和时间文件名中.
不幸的是,我在这里看不到合适的政策和/或触发器:http://logback.qos.ch/manual/appenders.html
UPDATE
我做了大约如"复制"中说的那样
<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>
Run Code Online (Sandbox Code Playgroud)
但我的班级com.inthemoon.toolkit.StartupTimeBasedTriggeringPolicy
从未被召唤过.我把断点放在start()
方法中,但它从未提出过.
此外,不会发生滚动.日志文件已创建,但始终具有名称routine.log
.
此外,我不明白,如何参数file
和filenamePattern
应该共存.
更新2
我有固定的UPDATE 1
类参考,但仍然没有我需要的.在给定的解决方案中,日期时间将插入OLD日志文件名中.例如,如果我在2013年运行程序,它就会创建routine.log
.然后我等了一年,并在2014年运行程序.将创建新的日志文件并具有名称routine.log
,而OLD 2013日志将被放入routine2014XXXXXXXXXX.log
,这是绝对无关紧要的.
我需要在每次程序启动时创建新文件,并将此文件标记为日期时间戳.
小智 13
以下配置将在每次运行程序时创建新的日志文件和控制台输出,请注意它不使用RollingFileAppender.有关更多信息,请参阅logback文档https://logback.qos.ch/manual/configuration.html
<configuration>
<timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logfile-${bySecond}.txt</file>
<append>true</append>
<encoder>
<Pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
<root level="info" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"></appender-ref>
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)