2011-04-11 26 views
9

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

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

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

哪里可以解决问题? 感谢

回答

9

默认情况下,企业库使用UTC时间戳记进行日志记录,因此这些日志时间不受影响。

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

Enterprise Library 5.0 - Application Logging - Incorrect DateTime

1

有一对夫妇的涌现在脑海可能性:

  • 上有史以来机正在运行的应用程序中的时钟尚未调整为夏令时。

  • 当你要求它的时间是UTC而不是当前地区的时区。

5

文化无知的一方比较?

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

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

3

这可能是因为EntLib在默认情况下记录UTC的时间戳。您可以覆盖此项see here

2

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

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