如何在Spring的application.properties中指定带日期的日志文件名
解决Spring Boot配置带日期日志文件名的问题
Spring Boot的logging.file.name属性不支持Log4j的日期占位符%d,直接配置会被当作普通字符串写入,所以得用Log4j2的专属配置文件来实现按日期生成日志文件的需求(你用了Lombok的@Log4j2,说明项目已经基于Log4j2做日志管理)。
具体步骤:
- 关闭Spring Boot默认日志配置,指定Log4j2配置文件
在application.properties中添加:
logging.config=classpath:log4j2.xml
- 创建Log4j2配置文件
在src/main/resources下新建log4j2.xml,配置按日期滚动的日志输出:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO"> <Appenders> <!-- 控制台日志输出 --> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> <!-- 按日期滚动的文件日志输出 --> <RollingFile name="RollingFile" fileName="logs/LogFile.log" filePattern="logs/LogFile.%d{yyyy-MM-dd}.log"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> <Policies> <!-- 每天自动滚动一次日志文件 --> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> </Policies> <!-- 保留最近30天的历史日志 --> <DefaultRolloverStrategy max="30"/> </RollingFile> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> <AppenderRef ref="RollingFile"/> </Root> </Loggers> </Configuration>
fileName:当前正在写入的日志文件名(当天日志会先写入这个文件)filePattern:日志滚动后的文件名格式,每天结束后会自动将LogFile.log重命名为LogFile.2024-05-21.log这类带日期的文件,同时新建LogFile.log用于次日日志写入
- 确保依赖配置正确
如果项目是Spring Boot Starter,需要排除默认的Logback依赖,引入Log4j2 Starter:
Maven示例(pom.xml):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <!-- 排除默认的Logback日志依赖 --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- 引入Log4j2 Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
内容的提问来源于stack exchange,提问作者xxlali
相关产品推荐
相关产品推荐

