1

我正在为日志使用以下配置。当文件名中包含时间戳时,文件不会翻转。这是因为时间戳中使用了 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>
4

1 回答 1

1

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

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

File/FileNamePattern 选项具有与之前定义的 appender [...] 相同的值“...”。

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

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

于 2017-08-03T10:21:16.700 回答