做系统运行错误日志,当系统发生异常的时候将异常信息写入日志中去,为了能够精确定位异常所在位置,可以在写入日志的同时将当前执行程序的方法名称、类名以及命名空间一起写入程序,在后期查看异常日志时可以很方便的定位程序异常所在位置。
创建一个控制台应用程序,引入命名空间 using System.Diagnostics;
、 using System.Reflection;
这里就直接上代码了!
using System;
using System.Diagnostics;
using System.Reflection;
namespace TestDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("命名空间:" + new Demo().GetInfo(1));
Console.WriteLine("方法类全名 包括命名空间:" + new Demo().GetInfo(2));
Console.WriteLine("方法名:" + new Demo().GetInfo(3));
Console.WriteLine("父方法命名空间:" + new Demo().GetInfo(4));
Console.WriteLine("父方法类全名:" + new Demo().GetInfo(5));
Console.WriteLine("父方法名:" + new Demo().GetInfo(6));
Console.ReadLine();
}
}
internal class Demo
{
internal string GetInfo(int type)
{
StackTrace stackTrace = new StackTrace(true);
MethodBase methodBase = stackTrace.GetFrame(1).GetMethod();
switch (type)
{
case 1:
//获取当前方法的命名空间
return MethodBase.GetCurrentMethod().DeclaringType.Namespace;
case 2:
//获取当前方法的类名称,包括命名空间
return MethodBase.GetCurrentMethod().DeclaringType.FullName;
case 3:
//获取当前方法名称
return MethodBase.GetCurrentMethod().Name;
case 4:
//获取父方法的命名空间
return methodBase.DeclaringType.Namespace;
case 5:
//获取父方法的类名,不包括命名空间
return methodBase.DeclaringType.Name;
case 6:
//获取父方法名称
return methodBase.Name;
}
return null;
}
}
}