大道至简,知易行难
广阔天地,大有作为

logback在操作系统时区设置正确时依然相差8小时的问题

某项目logback日志输出时间总是跟北京时间相差8小时,开始以为是操作系统本身时区设置的问题,但通过 date -R命令查看发现服务器的时区设置是没问题。而logback.xml的配置也是很常用的格式:

根据官网文档:https://logback.qos.ch/manual/layouts.html

Note that in the absence of the timezone parameter, the default timezone of the host Java platform is used. If the specified timezone identifier is unknown or misspelled, the GMT timezone is assumed as dictated by the TimeZone.getTimeZone(String) method specification.

那么,Java使用的默认时区又是什么呢,使用如下代码获取:

可以发现,虽然操作系统时区是对的,但是Java获取的时区却不对:

TimeZone.getDefault()到底从哪里取值可以参见参考文档1。

我们此处直接按照logback的文档在logback.xml中设置一下时区为Asia/Shanghai即可。

查询所有时区可使用如下的代码:

在JDK1.8上输出如下:

 

参考文档:
1、https://www.baeldung.com/java-jvm-time-zone

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » logback在操作系统时区设置正确时依然相差8小时的问题

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址