我正在为日志使用以下配置。当文件名中包含时间戳时,不会滚动更新文件。这是因为时间戳中使用了时间引用吗?如果我从文件名中删除时间戳,则文件滚动到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>
我解决了这个问题。有 2 个具有相同文件名的追加器。所以重命名失败了。
https://logback.qos.ch/codes.html 网站上的以下描述帮助了我。
文件/文件名模式选项具有相同的值"..."作为给定的 前面定义的追加器 [...]
如果之前定义的文件追加器/滚动文件追加器具有相同的 文件选项作为当前追加器,则这两个追加器在 冲突,因为文件追加器实例无法共享相同的输出 目标。为防止数据丢失,当前追加程序将不会启动。 确保每个追加程序都有唯一的"文件"选项。
通过类比,相同的限制适用于"文件名模式"选项 的滚动文件追加器。确保每个滚动文件追加器都有一个 唯一的文件名模式选项