log4Net中的StackTrace

  系统是在开发完毕后才采用了Log4net的框架,结果很多东西都需要引用log4Net的东西,所以想写一个通用的类,写一些公共的静态方法,那样大家就Happy了,于是又发现一个问题:配置文件的%M老记录静态方法中的方法名,而不记录出错的方法名。于是顺着log4net的藤摸他的瓜。 找到了StackTrace 和StackFrame这些类,其实我对这些类是不太清楚。

    即使这样我们也得修改呀。

 
  public   class  LogMgr
    
{
        
private static ILog log = LogManager.GetLogger(MethodInfo.GetCurrentMethod().DeclaringType);

        
public static string LogPosition()
        
{
            StackTrace st 
= new StackTrace();
            StackFrame sf 
= st.GetFrame(1);
            
return "Position:" + sf.GetMethod().DeclaringType.Name+"["+sf.GetMethod().Name+"]\r\n";
        }


        
public void Error(string message)
        
{
            log.Error(LogPosition()
+message);
        }

        
public void Debug(string message)
        
{
            log.Debug(LogPosition()
+ message);
       
        }

        
public void Info(string message)
        
{
            log.Info(message);
        }

        
public void Warn(string message)
        
{
            log.Warn(message);
        }

    }


  这个类记录了当前方法的位置,即LogMgr所在方法的方法名。

 

  

你可能感兴趣的:(stack)