使用Spring Boot的Logback TimeBasedRollingPolicy

时间:2019-03-05 20:25:06

标签: java spring-boot logback slf4j spring-logback

我写了一个TimeBasedRollingPolicy logback.xml ,尽管成功创建了日志文件,但似乎正在从 application.properties 中读取它。这是我的设置:

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml"/>

    <appender name="ROLLING-FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover -->
            <fileNamePattern>${LOG_FILE}-%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="ROLLING-FILE"/>
    </root>

</configuration>

application.properties

logging.path=/path/to/log/folder/
logging.file=${logging.path}myLog
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

运行我的应用程序时,日志会成功保存在正确的路径中,但只能保存为 myLog 。我希望将其附加日期(如logback.xml中)。请注意,我确实要继续从 application.properties 中获取 logging.path logging.file ,因为我根据环境有多种选择。

谢谢

1 个答案:

答案 0 :(得分:1)

1)您需要设置logging.filelogging.path属性,但不能同时设置两者。
因此,logging.file=/path/to/log/folder/myLog应该足以在指定路径中获取myLog日志文件。

The spring boot documentation提到了这一点。

2)这是日志滚动的格式,而不是当前日志的格式:

 <fileNamePattern>${LOG_FILE}-%d{yyyy-MM-dd}.log</fileNamePattern>  

当前日志文件在滚动/归档时会自动获得此格式,因为已达到该模式定义的时间限制。就您而言,这意味着每天。