log4net按日志级别(debug,info,warn,error,fatal)生成日志目录,同时每小时生成一个日志文件

下面是我的配置文件和代码,总觉得还有可复用的写法,请大家指点!

    StackFrame sf = new StackFrame(1);
    msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
上面两句是用来获取调用者的信息,就是由哪个类的哪个方法发起的调用。

如果LogDemo工程下,Program类中的Main方法调用了Log.cs中的Error方法,则msg=LogDemo.Program.Main。


log4net.config

这个配置文件中有多线程并发的配置,有自定义日志名称配置,同时也有自定义目录配置

请注意配置文件中的datePattern节点的配置格式,根据此配置可以按天,半天,小时,分钟等生成单个日志文件。同时也可以按日期(或者月份生成文件夹)


  
    
                                     

    
      
      
    

    
      
      
    

    
      
      
    

    
      
      
    

    
      
      
      
      
      
      
      
      
      
      
        
      
    

    
      
      
      
      
      
      
      
      
      
      
        
      
    

    
      
      
      
      
      
      
      
      
      
      
        
      
    

    
      
      
      
      
      
      
      
      
      
      
        
      
    

    
      
      
      
      
      
      
      
      
      
      
        
      
    

    
      
        
      
    
  

Log.cs

  public class Log
    {
        private static ILog _logdebug = LogManager.GetLogger("logdebug");
        private static ILog _loginfo = LogManager.GetLogger("loginfo");
        private static ILog _logwarn = LogManager.GetLogger("logwarn");
        private static ILog _logerror = LogManager.GetLogger("logerror");
        private static ILog _logfatal = LogManager.GetLogger("logfatal");


        public static void Debug(string msg)
        {
            StackFrame sf = new StackFrame(1);
            msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
            _logdebug.Debug(msg);
        }


        public static void Debug(string msg, Exception e)
        {
            StackFrame sf = new StackFrame(1);
            msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
            _logdebug.Debug(msg, e);
        }


        public static void Info(string msg)
        {
            StackFrame sf = new StackFrame(1);
            msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
            _loginfo.Info(msg);
        }
        public static void Info(string msg, Exception e)
        {
            StackFrame sf = new StackFrame(1);
            msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
            _loginfo.Info(msg, e);
        }




        public static void Warn(string msg)
        {
            StackFrame sf = new StackFrame(1);
            msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
            _logwarn.Warn(msg);
        }
        public static void Warn(string msg, Exception e)
        {
            StackFrame sf = new StackFrame(1);
            msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
            _logwarn.Warn(msg, e);
        }


        public static void Error(string msg)
        {
            StackFrame sf = new StackFrame(1);
            msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
            _logerror.Error(msg);
        }


        public static void Error(string msg, Exception e)
        {
            StackFrame sf = new StackFrame(1);
            msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
            _logerror.Error(msg, e);
        }


        public static void Fatal(string msg)
        {
            StackFrame sf = new StackFrame(1);
            msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
            _logfatal.Fatal(msg);
        }


        public static void Fatal(string msg, Exception e)
        {
            StackFrame sf = new StackFrame(1);
            msg = string.Format("{0}.{1}:{2}", sf.GetMethod().ReflectedType.FullName, sf.GetMethod().Name, msg);
            _logfatal.Fatal(msg, e);
        }


    }



你可能感兴趣的:(log4net按日志级别(debug,info,warn,error,fatal)生成日志目录,同时每小时生成一个日志文件)