使用谨慎标志和文件位置设置Logback RollingFileAppender

时间:2013-02-19 17:29:00

标签: logback

如何在Logback中接受谨慎标志的RollingFileAppender,并允许我指定日志文件的位置?

我尝试了以下操作,但据我所知,文档中的logback不支持file属性。还有另一种设置日志文件位置的方法吗?

   <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${MY_LOG_LOCATION_PROP}/logs/mylogfile.log</file>
        <prudent>true</prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>mylogfile-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

2 个答案:

答案 0 :(得分:5)

如果缺少file属性,则将从fileNamePattern的值推断出当前活动的日志文件。因此,file属性不是必需的。同样重要的是,在审慎模式下,必须留空。

以下是fileNamePattern文档中的相关引用:

  

请注意RollingFileAppender中的文件属性(父级的   可以设置或省略TimeBasedRollingPolicy。通过设置   包含FileAppender的文件属性,你可以解耦   活动日志文件的位置以及存档日志的位置   文件。当前日志将始终以指定的文件为目标   由文件属性。它遵循当前活动的名称   日志文件不会随时间而改变。但是,如果您选择省略   文件属性,然后将为每个活动文件重新计算活动文件   period基于fileNamePattern的值。以下示例   应澄清这一点......

答案 1 :(得分:1)

您可以在fileNamePattern中包含路径:

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>/var/log/myapp/mylogfile-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>