很好地将异常格式化为字符串

时间:2009-10-14 02:58:31

标签: c# .net silverlight exception-handling

我想为日志记录构建一个格式良好的异常字符串。从silverlight执行此操作,因此nlog(not there yet),log4net等选项不是一个选项。

任何人都可以看到构建类似代码的代码:

ExceptionType: xxxx
Message: xxxx
StackTrace: XXX
InnerException
    ExceptionType: xxxx
    Message: xxxx
    StackTrace: XXX

我现在正在自己编写,只是希望有代码可以做更好的事情。

更新:当我得出与Zach相同的结论时,我正准备关闭这个q,但不会剥夺Zach的分数! :)

.ToString()如下所示:

System.Exception: I can't handle this ---> System.DivideByZeroException: Attempted to divide by zero.
   at MuckingAround.RussTest_Click(Object sender, RoutedEventArgs e)
   --- End of inner exception stack trace ---
   at MuckingAround.RussTest_Click(Object sender, RoutedEventArgs e)
   at System.Windows.Controls.Primitives.ButtonBase.OnClick()
   at System.Windows.Controls.Button.OnClick()
   at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
   at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
   at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, String eventName)

3 个答案:

答案 0 :(得分:16)

您应该通过简单地调用异常的.ToString()方法来获得所有这些。我们使用它来记录信息,你得到我认为你要求的一切。有关详细信息,请参阅MSDN System.Exception.ToString()

答案 1 :(得分:0)

为了完整性:EntLib记录器允许您为应用程序异常定义格式化程序。

答案 2 :(得分:0)

另外,请看一下Enterprise Library 5.0 Silverlight Integration Pack中的内容,它将解决LOB开发人员的许多跨领域问题,包括日志记录和异常处理。

随意评论这些功能,也请投票!