2011-10-10 75 views
1

我正在使用Microsoft企业库日志记录应用程序块记录异常。 我正在使用数据库跟踪侦听器。日志记录应用程序块:数据库跟踪侦听器时间戳

默认情况下,日志条目的时间戳采用UTC时间。

我知道我可以通过设置日志格式像这样有本地时间在“登录”表“FormattedMessage”列中的时间戳: 时间戳:{时间戳(本地)}

我怎样才能'时间戳'列做同样的事情?

谢谢。

+1

你想在数据库中保存当地时间吗?别! –

回答

2

最简单的做法是设置LogEntryTimestamp属性。

例如为:

LogEntry le = new LogEntry() 
{ 
    Message = "Log it", 
    TimeStamp = DateTime.Now // use local time 
}; 

le.Categories.Add("General"); 

Logger.Write(le); 

其他选项,做你想做的是创建一个自定义跟踪监听或修改WriteLog存储过程使用任何你想要的值。你可以简单地使用GETDATE()或者你可以做的UTC时间戳的推移,一些操作:

DATEADD(HOUR, DATEDIFF(HOUR, GETUTCDATE(), GETDATE()), timestamp) 

由于利息(因为你通常不会使用这种类型的代码)的一个点,如果你使用Write( )方法的FormattedDatabaseTraceListener直接使用本地的DateTime。例如:

var dbWriter = new FormattedDatabaseTraceListener(
    EnterpriseLibraryContainer.Current.GetInstance<Database>(), 
    "writeLog", "AddCategory", new TextFormatter()); 

dbWriter.Write("Log this!", "General"); 

但作为评论者写道,我会建议坚持使用UTC。

相关问题