6

我怎样才能RollingFileAppender在 Logback 中创建一个接受 prudent 标志并允许我指定日志文件的位置?

我尝试了以下操作,但据我了解,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>
4

2 回答 2

7

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

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

请注意,RollingFileAppender(TimeBasedRollingPolicy 的父级)中的文件属性可以设置或省略。通过设置包含 FileAppender 的文件属性,您可以将活动日志文件的位置和归档日志文件的位置解耦。当前日志将始终针对文件属性指定的文件。因此,当前活动的日志文件的名称不会随着时间而改变。但是,如果您选择省略 file 属性,则活动文件将根据 fileNamePattern 的值为每个周期重新计算。下面的例子应该澄清这一点......

于 2013-04-12T12:08:15.087 回答
3

您可以在 fileNamePattern 中包含路径:

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>/var/log/myapp/mylogfile-%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
于 2013-04-11T20:42:01.223 回答