具有文件名中的时间戳的日志记录文件未滚动

时间:2017-08-03 06:48:19

标签: java logging logback logback-classic

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

1 个答案:

答案 0 :(得分:0)

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

以下关于https://logback.qos.ch/codes.html网站的说明帮助了我。

  

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

     

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

     

通过类比,相同的限制适用于FileNamePattern选项   RollingFileAppender。确保每个RollingFileAppender都有一个   唯一的FileNamePattern选项