2

我想写异常的方法名、类名、文件名、行号。我怎样才能做到这一点?我尝试了下面的代码,传递Exception给写入msg文本文件的函数。

string msg = "";
StackTrace st = new StackTrace(ex);
var frame=st.GetFrame(0);           
msg = @"Message : " + ex.Message + " \n FileName: " + frame.GetFileName() + " \n Method Name : " + frame.GetMethod() + "\n Line Number : " + frame.GetFileLineNumber()+"\n Class Name :"+frame.GetMethod().DeclaringType;

日志写入文件如下

 Message: Message : Attempted to divide by zero. 
 FileName:  
 Method Name : Void Page_Load(System.Object, System.EventArgs)
 Line Number : 0
 Class Name :RequestsView

为什么即使它出现在页面的另一行,也会FileName丢失并显示 0。LineNumber如果有的话,请在代码中提出更正建议。

4

3 回答 3

2

只需使用Exception.StackTrace抛出异常的属性来获取您需要的所有信息

于 2012-12-17T12:18:40.207 回答
0

为什么要重新发明轮子?干燥。NLog 提供了这个功能,而且开箱即用。

于 2012-12-17T12:31:32.173 回答
0

使用此行获取您想要的详细信息..

int lineNumber = new System.Diagnostics.StackTrace(ex,true).GetFrame(0).GetFileLineNumber(); className = new System.Diagnostics.StackTrace(ex, true).GetFrame(0).GetFileName(); methodName = new System.Diagnostics.StackTrace(ex,true).GetFrame(0).GetMethod().Name;

于 2016-02-04T12:39:31.707 回答