logback在名称为当前日期的文件夹中创建日志文件

jai*_*kla 3 java logback appender

在我当前的项目中,我希望日期创建日志文件,即日志文件应驻留在
名称为日期的文件夹中.归档也应该在该特定文件夹中进行.

我正在使用的当前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>
Run Code Online (Sandbox Code Playgroud)

Dav*_*sel 7

fileNamePattern文档中所述,您可以指定多个%d标记,以便将日期放在存档文件名的文件夹名称中:

<fileNamePattern>${PROJECT_HOME}\\projectname\\audits\\%d{yyyy-MM, aux}\\myproject_%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
Run Code Online (Sandbox Code Playgroud)

请注意,只有一个%d标记可以是主标记,所有其他标记必须通过传递'aux'参数标记为辅助标记.

但是,如果您还想将其放在非归档文件名的文件名中,那么您有两个选择:

  1. 使用<timestamp />元素设置您在路径中使用的变量.但是这个时间戳只会在启动时设置一次,所以它对批量运行有好处,但对于服务却没有.

  2. 做像上述(1),但包裹<appender/><timestamp />SiftingAppender,这将使该时间戳进行重新评估,如果使用的logback> = 1.0.12的版本.不确定你想要如何配置SiftingAppender.但希望这会让你走上正轨.