企业库日志记录器写入的日志与当前时间相差1小时

10

我们在记录日志时遇到了一个奇怪的问题。我们在Web应用程序中使用Microsoft.Practices.EnterpriseLibrary.Logging库进行日志记录,但问题是它将日志写入的时间比当前系统时间早1小时。

我们的记录器基于这篇文章,并且日志条目中的时间从未由我们的代码设置。每个日志条目都有一个标题,看起来像这样:

MainLogSource Information: 0 : Timestamp: 11/04/2011 10:15:32因此,这个时间戳总是比系统时间早1小时(例如,这个条目出现在11:15)。

问题可能出在哪里呢? 谢谢。

5个回答

9

5

对比双方的文化认知不同?

例如:记录器以UTC时间写出时间,您将其与本地系统时间进行比较,并恰好设置了一小时的差异?例如,中欧时间比UTC时间提前1个小时(一年的一半)。

您的语言环境设置是什么?这是一个非常常见的现象。基本上,为了可比性,记录器等都喜欢在UTC时间设置,您也应该这样做。我知道一些公司在UTC时间语言环境下运行服务器,以便更容易地将日志与系统时钟进行比较(代价是系统时钟始终不准确)。


3

这可能是因为EntLib默认记录UTC时间戳。您可以覆盖此设置,请参见此处


2

在您的代码中设置LogEntry类的TimeStamp属性。您可以将其设置为本地时间。这将反映在两个位置:TimeStamp和ExtendedProperties。 如下所示:

    var newLog = new LogEntry(objException.Message, "General", 1, 1, TraceEventType.Error, "YourApp", null);
    newLog.TimeStamp = DateTime.Now;

1

我能想到几种可能性:

  • 运行应用程序的计算机上的时钟还没有进行夏令时调整。

  • 在获取时间时,您请求的是UTC时间而不是当前语言环境的时区时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接