随笔 - 29  文章 - 1 评论 - 78 trackbacks - 2

  系统是在开发完毕后才采用了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所在方法的方法名。

 

  
posted @ 2008-01-30 16:21 最远距离 阅读(441) 评论(0) 编辑