2014-12-25 93 views
5

我使用Azure工作者角色中的Trace类。System.Diagnostics.Trace - 记录异常的正确方法

我要登录的方式异常,将打印有关的异常通常是所有的信息:

  • 异常消息
  • 异常堆栈跟踪
  • 递归打印内部异常

我只看到一个Trace.TraceError方法获取一个字符串和参数。是不是有相当于Java的日志框架获得异常并知道如何记录它的东西? (是的,我正在做MS世界的第一步......)

+6

你应该知道(和艾尔诺德Weerd的答案利用这一事实)是Exception.ToString()格式化所有的,你通常看到的任何地方显示的异常信息。 (多年来我没有意识到这一点,并且正在使用Exception.Message和Exception.this和Exception.that来显示一个异常。) – RenniePet

+1

另一个评论,因为你说你是.Net的新手:有几个可用的日志包为.Net。下面是一个比较,它可能并不是没有偏见的,因为它是由一个包的所有者发布的:http://www.dotnetlogging.com/comparison/ – RenniePet

回答

6

不,没有。但是,你可以写异常的类,它的扩展方法这个,所以你可以调用

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); 
    } 
}