Print stack trace information from C#作为产品中某些错误处理的一部分,我们希望转储一些堆栈跟踪信息。 但是,我们体验到许多用户只会为错误消息对话框截图,而不是向我们发送该程序提供的完整报告的副本,因此,我想在此对话框中提供一些最少的堆栈跟踪信息。 我的计算机上的.NET堆栈跟踪如下所示:
我有这个问题: 格式如下:
但是,在at和in关键字中,我假设如果它们运行挪威语.NET运行时而不是我安装的英语时,它们将被本地化。 有什么办法让我以与语言无关的方式拆开堆栈跟踪,以便我只能显示具有此名称的那些条目的文件和行号? 换句话说,我想从上面的文本中获得以下信息:
您可以提供的任何建议都会有所帮助。 您应该能够通过说出一个StackTrace对象而不是一个字符串
然后,您可以自己查看框架,而无需依赖框架的格式。 另请参阅:StackTrace参考 这是我用来毫无例外地执行此操作的代码
只是为了使其成为15秒的复制粘贴答案:
(基于Lindholm的答案) 甚至有更短的版本。
作为替代,log4net尽管有潜在危险,但比System.Diagnostics给我更好的结果。 基本上在log4net中,您有一个用于各种日志级别的方法,每个方法都有一个Exception参数。 因此,当您传递第二个异常时,它将把堆栈跟踪信息打印到您配置的任何追加程序。
例如: 输出取决于配置,看起来像
|