2011-10-10 71 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。

相關問題