记录应用程序块:数据库跟踪侦听器时间戳

时间:2011-10-10 14:09:23

标签: .net enterprise-library logging-application-block

我正在使用Microsoft Enterprise Library Logging Application Block记录异常。 我正在使用数据库跟踪侦听器。

默认情况下,日志条目的时间戳以UTC时间为单位。

我知道通过设置日志格式化程序,我可以在“Log”表的“FormattedMessage”列中获取本地时间的时间戳:     时间戳:{timestamp(local)}

如何使用'Timestamp'列进行同样的操作?

谢谢。

1 个答案:

答案 0 :(得分:2)

执行所需操作的最简单方法是设置Timestamp的{​​{1}}属性。

E.g:

LogEntry

执行所需操作的其他选项是创建自定义跟踪侦听器或修改LogEntry le = new LogEntry() { Message = "Log it", TimeStamp = DateTime.Now // use local time }; le.Categories.Add("General"); Logger.Write(le); 存储过程以使用您希望的任何值。你可以简单地使用WriteLog,或者你可以对传递的UTC时间戳进行一些操作:

GETDATE()

作为一个兴趣点(因为你通常不会使用这种类型的代码),如果直接使用DATEADD(HOUR, DATEDIFF(HOUR, GETUTCDATE(), GETDATE()), timestamp) 的Write()方法,它会使用本地DateTime。 E.g:

FormattedDatabaseTraceListener

但正如评论者所写,我建议坚持使用UTC。