gpt4 book ai didi

java - 如何在 spring boot 属性文件中使用时间戳?

转载 作者:行者123 更新时间:2023-12-05 08:03:51 25 4
gpt4 key购买 nike

我想在日志文件名中使用重启时间戳,我可以通过某种方式在属性文件中获取它吗?

当前实现:

logging.file.name=abc_services-${PID}.log

类似下面的内容应该会有所帮助:

logging.file.name=abc_services-${PID}-${timestamp}.log

其他实现方式有:

  1. 使用系统属性 LOG_FILE 并设置具有时间戳的文件名
  2. 使用 logback-spring.xml 文件并使用此 answer 中说明的方式.

但在属性文件中实现这一点是我发现的好方法。 Spring Boot 版本 2.6.5

最佳答案

我更喜欢您在问题中提到的标准 spring logback xml 机制。

我尝试使用来自 https://start.spring.io/ 的最新演示 spring web 项目进行跟踪

  1. 我关注了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);
}
}
  1. 我们可以使用 maven 构建时间戳而不是生成客户时间戳

    logging.file.name=abc_services-${PID}-@maven.build.timestamp@.log

  2. 如果应用程序在 Docker/Cloud 环境/Container 中运行,它应该有一个环境变量来存储启动时间。我们可以使用该时间戳来定义文件名中的时间戳

关于java - 如何在 spring boot 属性文件中使用时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71203947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com