我想编写例外的methodname,classname,filename,linenumber。我怎样才能实现这个目标?我尝试了以下代码,将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
丢失,LineNumber
显示0,即使它出现在页面的另一行。如果有的话,请在代码中建议更正。
答案 0 :(得分:2)
只需使用抛出异常的Exception.StackTrace
属性即可获取所需的所有信息
答案 1 :(得分:0)
为什么要尝试重新发明轮子?干。 NLog提供了这项功能,而且开箱即用。
答案 2 :(得分: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;