我的logback配置文件中有以下RollingFileappender。
<appender name="RollingFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>C:\Files\MyLogFile.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>C:\Files\MyLogFile.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{60} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
它写入MyLogFile.log但不附加FileNamePattern中指定的日期。
有一个simular question,但它从未解决我的困惑。
我应该省略文件属性。 为什么文件属性有用,因为它似乎否决了滚动文件活动。
这让我很困惑。做错了什么?
答案 0 :(得分:2)
file
属性在fileNamePattern
属性中使用时,将定义ACTIVE文件的名称,只有已归档的文件才会将该模式作为名称。滚动活动文件时,将使用该名称创建新的存档文件。来自chapter 4 in the manual:
请注意,可以设置或省略RollingFileAppender(TimeBasedRollingPolicy的父级)中的文件属性。通过设置包含FileAppender的file属性,可以分离活动日志文件的位置和归档日志文件的位置。当前日志将始终以文件属性指定的文件为目标。因此,当前活动日志文件的名称不会随时间而改变。但是,如果您选择省略文件属性,则将根据fileNamePattern的值为每个句点重新计算活动文件。
因此,当您想要一个固定名称时,它很有用,例如,如果您需要以编程方式发送活动文件,并且不想猜测当前日期的文件名是什么。
另请注意,file
是从常规FileAppender
继承的属性。