java - 为什么 log4j 消息会产生 UTC 时间戳?

标签 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 会生成具有正确(本地)时区的日期。

最佳答案

我认为问题实际上在于 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/

相关文章:

Docker 日志不可读

java - 使用 lambda 表达式反转字符串中的单词

java - 检测参数字符串的代码行

java - JSF mysql tomcat内存泄漏

linux - Bash 脚本日志文件连续显示到屏幕上

perl - 将Perl打印语句重定向到Apache日志

java - 使用 log4j 创建带有日期的日志文件

hibernate - JBoss 7 + hibernate + Log4j

java - || 之间的优先顺序和 && - java

java - java中继承内部类