5
我使用Azure工作者角色中的Trace類。System.Diagnostics.Trace - 記錄異常的正確方法
我要登錄的方式異常,將打印有關的異常通常是所有的信息:
- 異常消息
- 異常堆棧跟蹤
- 遞歸打印內部異常
我只看到一個Trace.TraceError方法獲取一個字符串和參數。是不是有相當於Java的日誌框架獲得異常並知道如何記錄它的東西? (是的,我正在做MS世界的第一步......)
我使用Azure工作者角色中的Trace類。System.Diagnostics.Trace - 記錄異常的正確方法
我要登錄的方式異常,將打印有關的異常通常是所有的信息:
我只看到一個Trace.TraceError方法獲取一個字符串和參數。是不是有相當於Java的日誌框架獲得異常並知道如何記錄它的東西? (是的,我正在做MS世界的第一步......)
不,沒有。但是,你可以寫異常的類,它的擴展方法這個,所以你可以調用
someException.Trace();
Exception類的toString方法可能返回所有你想要所以纔跟蹤消息。你可以在同一個方法中添加額外的信息(如果堆棧跟蹤不足,則重新處理內部異常)進程ID,用戶ID,線程ID等。
public static class ExceptionExtensions
{
public static void Trace(this Exception _this)
{
Trace.TraceError("{0:HH:mm:ss.fff} Exception {1}", DateTime.Now, _this);
}
}
你應該知道(和艾爾諾德Weerd的答案利用這一事實)是Exception.ToString()格式化所有的,你通常看到的任何地方顯示的異常信息。 (多年來我沒有意識到這一點,並且正在使用Exception.Message和Exception.this和Exception.that來顯示一個異常。) – RenniePet
另一個評論,因爲你說你是.Net的新手:有幾個可用的日誌包爲.Net。下面是一個比較,它可能並不是沒有偏見的,因爲它是由一個包的所有者發佈的:http://www.dotnetlogging.com/comparison/ – RenniePet