【问题标题】:Logback file with timestamp in file name not rolledover文件名中带有时间戳的 Logback 文件未翻转
【发布时间】:2018-01-10 14:57:11
【问题描述】:

我正在为日志使用以下配置。当文件名中包含时间戳时,文件不会翻转。这是因为时间戳中使用了 timeReference 吗?如果我从文件名中删除时间戳,则文件会在达到 10KB 文件大小时滚动。

有没有办法在文件名中包含时间戳并同时使翻转工作?

<timestamp key="startTime" datePattern="yyyyMMdd_HHmmss" timeReference="contextBirth">
<property name="logFileName" value="xyz_${startTime}">
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${logFileName}.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${logFileName}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10KB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <pattern>%date %level %logger{35} %msg%n%rEx</pattern>
    </encoder>
</appender>

【问题讨论】:

    标签: java logging logback logback-classic


    【解决方案1】:

    我解决了这个问题。有 2 个具有相同文件名的附加程序。所以重命名失败了。

    https://logback.qos.ch/codes.html 网站上的以下描述帮助了我。

    File/FileNamePattern 选项具有与为 appender [...] 之前定义的。

    如果之前定义的 FileAppender/RollingFileAppender 具有相同的 文件选项作为当前的附加程序,那么这两个附加程序在 冲突,因为 FileAppender 实例不能共享相同的输出 目标。为防止数据丢失,当前的 appender 不会启动。 确保每个 appender 都有一个唯一的 File 选项。

    同样的限制适用于 FileNamePattern 选项 RollingFileAppender 的。确保每个 RollingFileAppender 都有一个 唯一的 FileNamePattern 选项

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-04
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多