2011-10-07 49 views
2

如何格式化設置TraceOutputOptions = TraceOptions.Timestamp時打印的時間戳數據?如何在使用TraceOptions.Timestamp時格式化時間戳數據

即時得到類似: 時間戳= 41329240725(實際值寫在輸出文本文件)

編輯: 我想是10:22:34.32938。我如何配置TextWriterTraceListener來實現這一點?

+0

但你怎麼會想格式化嗎? Timestamp確實是一個long值,其實際含義取決於時間源(高性能計數器或系統定時器)和高性能計數器的頻率(如果使用的話)。 –

回答

2

你真的想記錄消息被寫入的時間恩?如果是這樣,你想使用TraceOptions.DateTime。請注意,根據MSDN,時間被寫爲UTC。

如果您想要更多地控制時間格式(包括如果您希望以UTC以外的方式表達它),那麼您可能會編寫自己的自定義TraceListener,或者找到一個可以執行您的操作的TraceListener想。

System.Diagnostics的一個有用的補充是Ukadc.Diagnostics。有了它,您可以輕鬆地將自定義格式添加到日誌消息中(類似於可以使用log4net和NLog執行的操作)。

這裏有一些其他的鏈接的答案,我在過去提供給您可能會發現有用的日誌記錄問題:

When should I use Tracing vs Logger.NET, Enterprise Library, log4net or Ukadc.Diagnostics?

When do I need more than one TraceSource in code?

+0

是的,我想要。現在我得到這個:DateTime = 2011-10-07T17:38:33.9825856Z。沒關係。你喜歡Ukadc.Diagnostics比log4net嗎?我試圖追蹤沒有任何其他第三部分庫。 – Pedro77

+1

現在我的個人喜好,如果使用第三方庫不是問題,是NLog。最近發佈了一個新的更新。 NLog和log4net在功能上非常接近。使用任何一種方法都可能不會出錯。另一種選擇是使用Common.Logging(http://netcommon.sourceforge.net/)日誌抽象。這樣你就不會被綁定到特定的日誌記錄庫。請注意,Common.Logging尚未發佈使用NLog最新版本的新版本。使用Common.Logging你可以... – wageoghe

+1

也很容易編寫你自己的基於System.Diagnostics的日誌抽象。我已經使用Ukadc.Diagnostics進行了實驗,發現它是一個非常好的庫,如果你使用System.Diagnostics作爲你的日誌系統(並且它使得System.Diagnostics成爲一個合理的選擇)。 – wageoghe

0

根據這一頁

http://msdn.microsoft.com/en-us/library/a10k7w6c.aspx

跟蹤選項時間戳返回蜱的數量,所以蜱轉換成時間,你需要做的:

DateTime date = new DateTime(41329240725); 
string FormattedDate = date.ToShortDateString(); 

然而41329240725,似乎有點小對於蜱(我希望這只是一個例子)

+0

實際上它是一個真實的例子。該數字在字符串(即插入到TraceEvent中)後寫入到輸出文本文件中。我想要10:22:34.32938之類的東西。我如何配置TextWriterTraceListener來實現這一點? – Pedro77