【问题标题】:How to include date in log file's name with Spring Boot / slf4j?如何使用 Spring Boot / slf4j 在日志文件名中包含日期?
【发布时间】:2025-11-24 19:05:01
【问题描述】:

Setting a log file name to include current date in Log4j是同一个问题,但是如何应用到slf4j自带的Spring Boot上呢?

application.properties

spring.application.name=keywords
logging.file=logs/${spring.application.name}.log

【问题讨论】:

    标签: java spring logging spring-boot slf4j


    【解决方案1】:

    here所述

    Spring Boot 有一个 LoggingSystem 抽象,它尝试根据类路径的内容配置日志记录。

    使用它

    最简单的方法是通过所有依赖于spring-boot-starter-logging 的starter pom。对于 Web 应用程序,您只需要 spring-boot-starter-web,因为它可传递地依赖于日志记录启动器。

    因为有Logback,所以首选。

    要配置日志系统的更细粒度设置,您需要使用相关 LoggingSystem 支持的本机配置格式。默认情况下,Spring Boot 从系统的默认位置获取本机配置(例如,用于 Logback 的 classpath:logback.xml),但您可以使用“logging.config”属性设置配置文件的位置。

    如果默认设置对您来说没问题,只需创建 logback.xml 并添加相应的文件附加程序,例如

    <appender name="rollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <FileNamePattern>LogFile.%d{yyyy-MM-dd}.log</FileNamePattern>
        <MaxHistory>30</MaxHistory>
      </rollingPolicy>
      <encoder>
        <pattern>%d %-5level [%thread] %logger{0}: %msg%n</pattern>
      </encoder>
    </appender>
    

    可以在here找到其他文档

    【讨论】: