我正在使用Microsoft Enterprise Library Logging Application Block记录异常。 我正在使用数据库跟踪侦听器。
默认情况下,日志条目的时间戳以UTC时间为单位。
我知道通过设置日志格式化程序,我可以在“Log”表的“FormattedMessage”列中获取本地时间的时间戳: 时间戳:{timestamp(local)}
如何使用'Timestamp'列进行同样的操作?
谢谢。
答案 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。