EnterpriseLibrary.Logging写入1小时差异的日志

时间:2011-04-11 10:46:07

标签: c# .net logging enterprise-library

我们遇到了一个奇怪的日志问题。我们使用Microsoft.Practices.EnterpriseLibrary.Logging库来登录我们的Web应用程序,问题是它写入的日志与当前系统时间相差1小时。

我们的记录器基于this article,我们在代码中永远不会设置日志条目中的时间。 每个日志条目都有一个如下所示的标题:

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

哪里可以出问题? 感谢

5 个答案:

答案 0 :(得分:9)

默认使用UTC时间戳的Enterprise Library日志,因此这些日期不受夏令时影响。

您可以更改.config文件中的格式化程序以使用本地时间(请参阅附件中的问题),但请注意,当夏令时发生变化时,这会导致重复的条目。

Enterprise Library 5.0 - Application Logging - Incorrect DateTime

答案 1 :(得分:5)

比较的一方的文化无知?

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

您的区域设置是什么?这是一种非常普遍的现象。基本上是可比较的记录器等。用UTC设置东西,你也应该这样做。我知道公司在UTC时间区域内运行服务器,因此更容易将日志与系统时钟进行比较(价格与系统时钟总是关闭)。

答案 2 :(得分:3)

这可能是因为EntLib默认以UTC格式记录时间戳。您可以覆盖此see here

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

有几种可能性让人想起:

  • 计算机正在运行应用程序的时钟尚未针对夏令时进行调整。

  • 获取时间请求为UTC而不是当前区域设置的时区。