【问题标题】:Wrong time in log4j logs on Windows Server 2003Windows Server 2003 上 log4j 日志中的错误时间
【发布时间】:2012-01-01 05:43:57
【问题描述】:

我有一个“奇怪”的问题。我在 Java 应用程序中使用 log4j。 在我的 PC 上,log4j 生成的日志中出现的时间很好,对应于我机器的本地时间。

问题是当我在 Windows Server 2003 上部署应用程序时,出现在日志文件中的时间变得混乱。日期很好,但小时和分钟根本没有。它们在所有服务器的本地时间都不匹配。而且我似乎不是时区问题,因为本地时间和日志时间之间的差异似乎是 4 小时 30 分钟。我知道,有些时区是 30 分钟,但是,仍然......

有人知道这怎么可能吗?

这里有 appender R 的转换模式:

log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

我只放了 log4j.properties 的这一部分,因为只有这一部分对我的问题感兴趣。

【问题讨论】:

  • 本地机器和服务器的时区系统设置是什么?
  • 我的是 (UTC + 1:00) 而服务器是 UTC
  • 它们是否至少是连续的并且随着服务器运行时间的延长而增长?您提到不相关,但我认为您的意思是它们与服务器的时钟不匹配。
  • 是的,你是对的 - 我的意思是它们与服务器的时钟不匹配。我编辑了我的问题以使其更清楚。

标签: java time log4j windows-server-2003


【解决方案1】:

不过,这似乎是一个时区问题。例如,您不会在与检查服务器日期不同的用户帐户上运行应用程序吗?

Log4j 采用默认时区,因此您可以尝试使用额外的命令行选项运行您的应用程序:

-Duser.timezone=UTC

看看有没有什么变化。

【讨论】:

  • 感谢您的回答,但不,应用程序是从管理员帐户运行的(用于检查服务器上的日期)。
  • @ovdsrn 如果你使用 -Duser.timezone 运行它会发生什么?
猜你喜欢
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多