C# log4net 不输出日志

http://www.cnblogs.com/chendaoyin/archive/2013/04/17/3026717.html

一个新项目,直接用了一些之前的代码,突然跟踪不到日志了。检查发现了原因,特在此记录。 

log4net的配置文件log4net_config.xml 

复制代码
<? xml version="1.0" encoding="utf-8"  ?>
< log4net >
     < appender  name ="TastInfo"  type ="log4net.Appender.RollingFileAppender" >
         < file  value ="Log\\Info\\"   />
         < appendToFile  value ="true"   />
         < rollingStyle  value ="Composite"   />
         < maxSizeRollBackups  value ="-1"   />
         < maximumFileSize  value ="1MB"   />
         < staticLogFileName  value ="false"   />
         < DatePattern  value ="yyyy-MM-dd&quot;.txt&quot;" />
         < layout  type ="log4net.Layout.PatternLayout" >
             < conversionPattern  value ="%date  %-5level  - %message%newline"   />
         </ layout >
     </ appender >
     < appender  name ="TastError"  type ="log4net.Appender.RollingFileAppender" >
         < file  value ="log\\Error\\"   />
         < appendToFile  value ="true"   />
         < rollingStyle  value ="Composite"   />
         < maxSizeRollBackups  value ="-1"   />
         < maximumFileSize  value ="1MB"   />
         < staticLogFileName  value ="false"   />
         < DatePattern  value ="yyyy-MM-dd&quot;.txt&quot;" />
         < layout  type ="log4net.Layout.PatternLayout" >
             < conversionPattern  value ="%date  %-5level - %message%newline"   />
         </ layout >
     </ appender >
     < appender  name ="TastDebug"  type ="log4net.Appender.RollingFileAppender" >
         < file  value ="log\\Debug\\"   />
         < appendToFile  value ="true"   />
         < rollingStyle  value ="Composite"   />
         < maxSizeRollBackups  value ="-1"   />
         < maximumFileSize  value ="1MB"   />
         < staticLogFileName  value ="false"   />
         < DatePattern  value ="yyyy-MM-dd&quot;.txt&quot;" />
         < layout  type ="log4net.Layout.PatternLayout" >
             < conversionPattern  value ="%date  %-5level - %message%newline"   />
         </ layout >
     </ appender >
     < logger  name ="Info" >
         < level  value ="ALL" />
         < appender-ref  ref ="Info"   />
         < appender-ref  ref ="TastInfo"   />
     </ logger >
     < logger  name ="Error" >
         < level  value ="ALL" />
         < appender-ref  ref ="Error"   />
         < appender-ref  ref ="TastError"   />
     </ logger >
     < logger  name ="Debug" >
         < level  value ="ALL" />
         < appender-ref  ref ="Debug"   />
         < appender-ref  ref ="TastDebug"   />
     </ logger >
</ log4net >
复制代码

log4net的应用错误代码:

复制代码
  public  class Log
    {
         private  static  string DefaultName =  " log ";

         static Log()
        {
             string path = AppDomain.CurrentDomain.BaseDirectory +  @" \log4net_config.xml ";
            log4net.Config.XmlConfigurator.Configure( new FileInfo(path));
        }

         public  static log4net.ILog GetLog( string logName)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(logName);
             return log;
        }

         public  static  void debug( string message)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
             if (log.IsDebugEnabled)
                log.Debug(message);

            log =  null;
        }

         public  static  void debug( string message, Exception ex)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
             if (log.IsDebugEnabled)
                log.Debug(message, ex);

            log =  null;
        }

         public  static  void error( string message)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
             if (log.IsErrorEnabled)
                log.Error(message);

            log =  null;
        }

         public  static  void error( string message, Exception ex)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
             if (log.IsErrorEnabled)
                log.Error(message, ex);

            log =  null;
        }

         public  static  void fatal( string message)
        {

            log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
             if (log.IsFatalEnabled)
                log.Fatal(message);

            log =  null;
        }

         public  static  void info( string message)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
             if (log.IsInfoEnabled)
                log.Info(message);

            log =  null;
        }

         public  static  void warn( string message)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
             if (log.IsWarnEnabled)
                log.Warn(message);

            log =  null;
        } 
    }
复制代码

不输出日志的原因是因为, 默认private static string DefaultName = "log",在配置文件里面找不到对应的节点值。

正确的应用代码:

复制代码
public  class Log
    {
         private  const  string SError =  " Error ";
         private  const  string SDebug =  " Debug ";
         private  const  string DefaultName =  " Info ";

         static Log()
        {
             var path = AppDomain.CurrentDomain.BaseDirectory +  @" \log4net_config.xml ";
            log4net.Config.XmlConfigurator.Configure( new FileInfo(path));
        }

         public  static log4net.ILog GetLog( string logName)
        {
             var log = log4net.LogManager.GetLogger(logName);
             return log;
        }

         public  static  void Debug( string message)
        {
             var log = log4net.LogManager.GetLogger(SDebug);
             if (log.IsDebugEnabled)
                log.Debug(message);
        }

         public  static  void Debug( string message, Exception ex)
        {
             var log = log4net.LogManager.GetLogger(SDebug);
             if (log.IsDebugEnabled)
                log.Debug(message, ex);
        }

         public  static  void Error( string message)
        {
             var log = log4net.LogManager.GetLogger(SError);
             if (log.IsErrorEnabled)
                log.Error(message);
        }

         public  static  void Error( string message, Exception ex)
        {
             var log = log4net.LogManager.GetLogger(SError);
             if (log.IsErrorEnabled)
                log.Error(message, ex);
        }

         public  static  void Fatal( string message)
        {
             var log = log4net.LogManager.GetLogger(DefaultName);
             if (log.IsFatalEnabled)
                log.Fatal(message);
        }

         public  static  void Info( string message)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(DefaultName);
             if (log.IsInfoEnabled)
                log.Info(message);
        }

         public  static  void Warn( string message)
        {
             var log = log4net.LogManager.GetLogger(DefaultName);
             if (log.IsWarnEnabled)
                log.Warn(message);
        } 
    }
复制代码
总结:log4net.LogManager.GetLogger(Name),这里面的Name要在配置文件中,有对应的节点值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值