以下 log4j 模式布局
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} | %-5p | %-35.35c{1} | %m%n" />
</layout>
生成 UTC 时间戳而不是本地时区。这是为什么?
此 UNIX 系统上的LANG
为 en_US.iso885915
。在 shell 中输入 date
会生成具有正确(本地)时区的日期。
最佳答案
我认为问题实际上在于 JVM 不使用操作系统时区,而是有自己的属性来存储它。
可以通过JVM参数设置,例如:
-Duser.timezone=Europe/Sofia
顺便说一句,如果您使用 Apache Extras for log4j ,则可以在 log4j 模式中设置 TZ (作为 %d 模式的一部分) ,像这样:
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT-4} | %-5p | %-35.35c{1} | %m%n" />
关于java - 为什么 log4j 消息会产生 UTC 时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32090902/