为什么log4j消息以UTC格式生成时间戳?

时间:2015-08-19 08:59:13

标签: java logging log4j

以下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系统上的

LANGen_US.iso885915。在shell中键入date将生成一个具有正确(本地)时区的日期。

1 个答案:

答案 0 :(得分:1)

我想,问题实际上是JVM不使用操作系统TimeZone,但它有自己的属性来存储它。

可以通过JVM参数设置,例如:

-Duser.timezone=Europe/Sofia

顺便说一下,如果使用Apache Extras for log4j,可以将log设置为log4j模式(作为%d模式的一部分),如下所示:

<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS}{GMT-4} | %-5p | %-35.35c{1} | %m%n" />