使用 slf4j 的日期日志文件

Datewise logging file using slf4j

我想要日期不同的记录器文件,例如

2017-05-20.log
2017-05-21.log
2017-05-22.log
2017-05-23.log

在我的 spring-boot 项目中使用了 slf4j 而不是 log4j。

我的application.properties文件设置:

spring.output.ansi.enabled=ALWAYS
logging.level.com.propatterns=DEBUG
logging.level.org.hibernate=ERROR
logging.level.org.springframework.web=ERROR
logging.file=logs/application.log

Slf4j 就是 API。您需要为此选择一个实现。

使用 Spring Boot,我认为最简单的选择是使用 Logback(这是 Ceki 的 slf4j 实现)。如果 Logback 可用,那么 Spring Boot 将使用它。

如果您将 logback.xml 放在类路径的根目录中,它将从那里获取,并且将根据该配置日志记录。

为了每天开始一个新的日志文件,你需要在 logback.xml 中这样的东西:

  <appender name="file"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${log.path}/log.log</file>
    <append>true</append>
    <encoder>
        <pattern>%date{ISO8601,Etc/UTC} %t %-5level %logger %msg%n
        </pattern>
    </encoder>
    <rollingPolicy
        class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${log.path}/log_%d{yyyy-MM-dd}.log
        </fileNamePattern>
    </rollingPolicy>
</appender>

<root level="ALL">
    <appender-ref ref="file" />
</root>
  1. 声明logback.xml文件springapplication.properties或yml文件。如果我们将配置名称保留为 logback.xml.

    ,则此步骤是可选的

    logging.file: logback.xml

  2. 只需在资源文件夹的根目录或类路径的根目录中创建一个标准的logback.xml。这将覆盖 Spring 引导日志记录模板。这里使用了'RollingFileAppender'。查看示例 here

    <property name="DEV_HOME" value="c:/logs" />
    
    <appender name="FILE-AUDIT"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${DEV_HOME}/debug.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{yyyy-MM-dd HH:mm:ss} - %msg%n
            </Pattern>
        </encoder>
    
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log
                        </fileNamePattern>
        </rollingPolicy>
    
    </appender>
    
    <logger name="com.example" level="debug"
        additivity="false">
        <appender-ref ref="FILE-AUDIT" />
    </logger>
    
    <root level="error">
        <appender-ref ref="FILE-AUDIT" />
    </root>