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