Spring Boot Slf4j 更改日志时间戳以使用 UTC 时区

May*_*yur 2 logging slf4j lombok spring-boot

具有默认记录器设置并使用 lombok 的 Spring Boot 应用程序 @Slf4j

打印日志,例如 {"timestamp":"2020-02-26T11:25:57.485-05:00" ..........} 11:25 显示的时间是美国东部标准时间或纽约时区

我们如何将其更改为以 UTC 时区记录时间戳?

我试过设置

logging: pattern: dateformat: yyyy-MM-dd HH:mm:ss.SSS, UTC

还可以使用设置 JVM 级别的 timzone

@PostConstruct TimeZone.setDefault(TimeZone.getTimeZone("UTC"));

并尝试在 application.yaml 中进行配置
logging: pattern: console: '%d{"yyyy/MM/dd HH:mm:ss,SSS,UTC"} [%p] [%t] %M\(%F:%L\) - %msg%n'

Dan*_*aub 6

您在slf4j 文档中描述的问题

检查日期格式后,我注意到确实日期格式

logging:
   pattern:
     dateformat: you date format
Run Code Online (Sandbox Code Playgroud)

由于某种原因无法正常工作

但是,如果您将使用控制台配置,它将起作用

logging:
  pattern:
    console: '%date{"yyyy/MM/dd HH:mm:ss,SSS", UTC} [%p] [%t] %M\(%F:%L\) - %msg%n'
Run Code Online (Sandbox Code Playgroud)

请注意,撇号应该只在日期格式上而不是在时区上,因为时间是 slf4j 日期格式解析器函数的第二个参数。

如 slf4j 文档中所述:

常见错误 - 鉴于逗号 ',' 字符被解释为参数分隔符,模式 HH:mm:ss,SSS 将被解释为模式 HM:mm:ss 和时区 SSS。如果您希望在日期模式中包含逗号,只需将模式括在引号之间即可。例如,%date{"HH:mm:ss,SSS"}。