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