我想在日志文件名中使用重启时间戳,我可以通过某种方式在属性文件中获取它吗?
当前实现:
logging.file.name=abc_services-${PID}.log
类似下面的内容应该会有所帮助:
logging.file.name=abc_services-${PID}-${timestamp}.log
其他实现方式有:
- 使用系统属性 LOG_FILE 并设置具有时间戳的文件名
- 使用 logback-spring.xml 文件并使用此 answer 中说明的方式.
但在属性文件中实现这一点是我发现的好方法。 Spring Boot 版本 2.6.5
最佳答案
我更喜欢您在问题中提到的标准 spring logback xml 机制。
我尝试使用来自 https://start.spring.io/ 的最新演示 spring web 项目进行跟踪
- 我关注了Add Timestamp Variable to Folder Path Value in Application Properties . 在启动时,我设置时间戳并在属性中访问相同的时间戳。但这将修复文件名,直到服务器重新启动。
示例文件名:abc_services-52855-1648696549862.log
我如下设置时间戳变量。我们可以根据需要控制格式,环境变量有多种设置方式。
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
System.setProperty("timestamp",String.valueOf(System.currentTimeMillis()));
SpringApplication.run(DemoApplication.class, args);
}
}
我们可以使用 maven 构建时间戳而不是生成客户时间戳
logging.file.name=abc_services-${PID}-@maven.build.timestamp@.log
如果应用程序在 Docker/Cloud 环境/Container 中运行,它应该有一个环境变量来存储启动时间。我们可以使用该时间戳来定义文件名中的时间戳
关于java - 如何在 spring boot 属性文件中使用时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71203947/