从呼叫者那里获取堆栈跟踪?

时间:2015-08-24 19:45:10

标签: .net vb.net error-handling exception-handling

我有一些简单的代码,用于将错误/警告/信息消息写入文本文件,以及时间,日期等。

我要写入文件的常见问题之一是堆栈跟踪,就像这样......

New Diagnostics.StackTrace(New Diagnostics.StackFrame(True))

问题在于,如果我将该代码放在日志文件处理程序中,我会将堆栈跟踪到达该点,这可能是远离事件实际位置的几个调用。

因此,我将此作为日志文件的参数,但这导致该行代码在我的应用程序中传播,数百或数千次。

如果我可以将代码放入日志代码本身,那会简单得多。这也使它更具可移植性 - StackTrace只存在于Windows上。

那么代码是否有某种方法可以确定“此对象外的第一个调用者”,以便我可以修改调用堆栈以显示它?

1 个答案:

答案 0 :(得分:0)

所以答案是“阅读文档”。 “技巧”是使用StackTrace中的集合并在框架中向后工作,直到找到一个名字不是你所在类的名字。