在我当前的项目中,我希望日期创建日志文件,即日志文件应驻留在内部 名称为日期的文件夹。 此外,归档应该在该特定文件夹中进行。
我使用的当前appender看起来像这样(它根据大小存档日志文件)。
<appender name="AUDITFILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${PROJECT_HOME}\\projectname\\audits\\myproject.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${PROJECT_HOME}\\projectname\\audits\\myproject_%d{yyyy-MM-dd}.%i.zip
</fileNamePattern>
<maxHistory>10</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%date %msg%n
</pattern>
</encoder>
</appender>
答案 0 :(得分:7)
如fileNamePattern文档中所述,您可以指定多个%d标记,以便将日期放在存档文件名的文件夹名称中:
<fileNamePattern>${PROJECT_HOME}\\projectname\\audits\\%d{yyyy-MM, aux}\\myproject_%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
请注意,只有一个%d标记可以是主标记,所有其他标记必须通过传递'aux'参数标记为辅助标记。
但是如果你还想把它放在非档案文件名的文件名中,那么你有两个选择:
使用<timestamp />
元素设置您在路径中使用的变量。但是这个时间戳只会在启动时设置一次,因此对批量运行有好处,但不适用于服务。
执行上述(1),但将<appender/>
和<timestamp />
与SiftingAppender
包装在一起,这样可以重新评估时间戳,如果使用版本logback&gt; = 1.0.12。不确定您要如何配置SiftingAppender
。但希望这会让你走上正轨。