gpt4 book ai didi

java - Logback 创建一个文件一次并写入该文件,即使它是过去的一天

转载 作者:行者123 更新时间:2023-11-30 06:17:51 26 4
gpt4 key购买 nike

我希望每天都有一个新文件被触发,显然它只是附加旧文件,无论是哪一天。这是我的 logback.xml。

<timestamp key="byDay" datePattern="yyyy-MM-dd"/>

<appender name="FILE" class="ch.qos.logback.core.FileAppender">

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>logFile.%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
<file>/opt/tomcat/logs/log-${byDay}.log</file>
<append>true</append>
<immediateFlush>true</immediateFlush>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="FILE" />
</root>

最佳答案

您的配置中有多个问题。

  • 您不需要时间戳元素,正如 @csenga 指出的
  • 您需要 RollingFileAppender 而不是 FileAppender
  • < file... > 不应有日期模式,即常量文件名前缀

更正的配置(请注意,我将滚动设置为每分钟发生一次):

<configuration scan="true" debug="true">
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/opt/tomcat/logs/log.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>/opt/tomcat/logs/log_%d{yyyy-MM-dd_HHmm}.log
</FileNamePattern>
</rollingPolicy>
<immediateFlush>true</immediateFlush>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="FILE" />
</root>
</configuration>

结果文件:

riskop@riskop:/opt/tomcat/logs$ ls -l
total 24
-rw-rw-r-- 1 riskop riskop 13640 febr 15 14:30 log_2018-02-15_1430.log
-rw-rw-r-- 1 riskop riskop 310 febr 15 14:31 log_2018-02-15_1431.log
-rw-rw-r-- 1 riskop riskop 155 febr 15 14:37 log.log

如果您查看 logback 自己的日志记录,您将看到回滚已记录:

14:37:20,673 |-INFO in c.q.l.core.rolling.DefaultTimeBasedFileNamingAndTriggeringPolicy - Elapsed period: Thu Feb 15 14:31:01 CET 2018
14:37:20,673 |-INFO in c.q.l.co.rolling.helper.RenameUtil - Renaming file [/opt/tomcat/logs/log.log] to [/opt/tomcat/logs/log_2018-02-15_1431.log]

如果在配置中省略 参数,则当前文件将根据日期时间模式命名。恕我直言,这不是通常的配置,因为在这种情况下,您第一眼看不到当前文件是什么。

关于java - Logback 创建一个文件一次并写入该文件,即使它是过去的一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48805041/

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