log4net使用详解

说明:本程序演示如何利用log4net记录程序日志信息。log4net是一个功能著名的开源日志记录组件。利用log4net能够方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。而且咱们还能够记载控制要记载的日志级别,能够记载的日志类别包括:FATAL(致命错误)、ERROR(通常错误)、WARN(警告)、INFO(通常信息)、DEBUG(调试信息)。要想获取最新版本的log4net组件库,能够到官方网站http://logging.apache.org/log4net/下载。如今的最新版本是1.2.10。web

下面的例子展现了如何利用log4net记录日志 。数据库

首先从官方网站下载最近版本的log4net组件,如今的最新版本是1.2.10。在程序中咱们只须要log4net.dll文件就好了,添加对log4net.dll的引用,就能够在程序中使用了。apache

接着咱们配置相关的配置文件(WinForm对应的是*.exe.config,WebForm对应的是*.config),本实例中是控制台应用程序,配置以下(附各配置的说明):windows

<? xml version="1.0" encoding="utf-8"  ?>
< configuration >
   < configSections >   
   < section  name ="log4net"  type ="System.Configuration.IgnoreSectionHandler" />
   </ configSections >  
  < appSettings >   
</ appSettings >
   < log4net >  
    <!-- 定义输出到文件中 -->  
    < appender  name ="LogFileAppender"  type ="log4net.Appender.FileAppender" >  
      <!-- 定义文件存放位置 -->        < file  value ="D:/log4netfile.txt"   />        < appendToFile  value ="true"   />        < rollingStyle  value ="Date"   />     
   < datePattern  value ="yyyyMMdd-HH:mm:ss"   />  
      < layout  type ="log4net.Layout.PatternLayout" >   
       <!-- 每条日志末尾的文字说明 -->      
    < footer  value ="by 周公"   />        
  <!-- 输出格式 -->          <!-- 样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info -->          < conversionPattern  value ="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline"   />    
    </ layout >   
   </ appender >   
   <!-- 定义输出到控制台命令行中 -->  
    < appender  name ="ConsoleAppender"  type ="log4net.Appender.ConsoleAppender" >   
     < layout  type ="log4net.Layout.PatternLayout" >      
    < conversionPattern  value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"   />      
  </ layout >     
</ appender >  
    <!-- 定义输出到windows事件中 -->  
    < appender  name ="EventLogAppender"  type ="log4net.Appender.EventLogAppender" >    
    < layout  type ="log4net.Layout.PatternLayout" >      
    < conversionPattern  value ="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"   /> </ layout >  
 
    </ appender >  
    <!-- 定义输出到数据库中,这里举例输出到Access数据库中,数据库为C盘的log4net.mdb -->    
  < appender  name ="AdoNetAppender_Access"  type ="log4net.Appender.AdoNetAppender" >     
   < connectionString  value ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:log4net.mdb"   />     
   < commandText  value ="INSERT INTO LogDetails ([LogDate],[Thread],[Level],[Logger],[Message]) VALUES (@logDate, @thread, @logLevel, @logger,@message)"   />        <!-- 定义各个参数 -->     
   < parameter >     
     < parameterName  value ="@logDate"   />        
  < dbType  value ="String"   />      
    < size  value ="240"   />    
      < layout  type ="log4net.Layout.PatternLayout" >       
     < conversionPattern  value ="%date"   />    
      </ layout >    
    </ parameter >     
   < parameter >      
    < parameterName  value ="@thread"   />     
     < dbType  value ="String"   />      
    < size  value ="240"   />  
        < layout  type ="log4net.Layout.PatternLayout" >   
         < conversionPattern  value ="%thread"   />    
      </ layout >        </ parameter >   
     < parameter >     
     < parameterName  value ="@logLevel"   />  
        < dbType  value ="String"   />
         < size  value ="240"   />       
   < layout  type ="log4net.Layout.PatternLayout" >     
       < conversionPattern  value ="%level"   />      
    </ layout >     
   </ parameter >   
     < parameter >       
   < parameterName  value ="@logger"   />      
    < dbType  value ="String"   />     
     < size  value ="240"   />    
      < layout  type ="log4net.Layout.PatternLayout" >
           < conversionPattern  value ="%logger"   />  
        </ layout >
       </ parameter >     
   < parameter >       
   < parameterName  value ="@message"   />
         < dbType  value ="String"   />    
      < size  value ="240"   />     
     < layout  type ="log4net.Layout.PatternLayout" >     
       < conversionPattern  value ="%message"   />  
        </ layout >   
     </ parameter >
     </ appender >    
  <!-- 定义日志的输出媒介,下面定义日志以四种方式输出。也能够下面的按照一种类型或其余类型输出。 -->   
   < root >    
    <!-- 文件形式记录日志 -->     
   < appender-ref  ref ="LogFileAppender"   />   
     <!-- 控制台控制显示日志 -->    
    < appender-ref  ref ="ConsoleAppender"   />   
     <!-- Windows事件日志 -->
       < appender-ref  ref ="EventLogAppender"   />  
      <!--  若是不启用相应的日志记录,能够经过这种方式注释掉       <appender-ref ref="AdoNetAppender_Access" />        -->    
  </ root >     
   </ log4net >
</ configuration >

程序文件:app

using  System;
using  System.Collections.Generic;
using  System.Text;
using  System.Windows.Forms;
using  System.Reflection;
using  log4net;
// 注意下面的语句必定要加上,指定log4net使用.config文件来读取配置信息
// 若是是WinForm(假定程序为MyDemo.exe,则须要一个MyDemo.exe.config文件)
// 若是是WebForm,则从web.config中读取相关信息
[assembly: log4net.Config.XmlConfigurator(Watch  =   true )]
namespace  Log4NetDemo {   
   ///   <summary>  
    ///  说明:本程序演示如何利用log4net记录程序日志信息。log4net是一个功能著名的开源日志记录组件。
     ///  利用log4net能够方便地将日志信息记录到文件、控制台、Windows事件日志和数据库中(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)。
     ///  下面的例子展现了如何利用log4net记录日志   
   ///  做者:周公      ///  时间:2008-3-26    
   ///   </summary>   
   public   class  MainClass     {       
   public   static   void  Main( string [] args)     
    {            
  // Application.Run(new MainForm());       
       // 建立日志记录组件实例         
    ILog log  =  log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);  
            // 记录错误日志      
       log.Error( " error " , new  Exception( " 发生了一个异常 " ));        
      // 记录严重错误           
  log.Fatal( " fatal " , new  Exception( " 发生了一个致命错误 " ));   
           // 记录通常信息       
      log.Info( " info " );        
      // 记录调试信息        
     log.Debug( " debug " );        
      // 记录警告信息       
      log.Warn( " warn " );        
     Console.WriteLine( " 日志记录完毕。 " );           
  Console.Read();        
    }  
  }
}

运行结果: 控制台上的输出ide

日志文件内容网站

 

在这里须要特别说明一下,注意上面的代码中有这么一句:[assembly: log4net.Config.XmlConfigurator(Watch = true)](在须要使用log4net的类的namespace处),若是没有这句就会在调试时获得以下留言中所说的“程序调试起来时isDebugEnable"的状况,但愿你们注意。 spa

相关文章
相关标签/搜索