演示如何利用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.11。

log4net示例步骤:

1.添加log4net.dll引用

2.配置log4net文件

文件名的命名规则(WinForm对应的是*.exe.config,WebForm对应的是*.config);配置文件内容如下:

 

  
  
  
  
  1. <?xml version="1.0" encoding="utf-8" ?> 
  2. <configuration> 
  3.   <configSections> 
  4.     <section name="log4net" type="System.Configuration.IgnoreSectionHandler" /> 
  5.   </configSections> 
  6.   <!-- This section contains the log4net configuration settings --> 
  7.   <log4net> 
  8.     <!-- Define some output appenders --> 
  9.     <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> 
  10.       <param name="File" value="Log/log.txt" /> 
  11.       <param name="AppendToFile" value="true" /> 
  12.       <param name="RollingStyle" value="Date" /> 
  13.       <param name="DatePattern" value="yyyy.MM.dd" /> 
  14.       <param name="StaticLogFileName" value="true" /> 
  15.       <layout type="log4net.Layout.PatternLayout" > 
  16.       <!--每条日志末尾的文字说明--> 
  17.       <!--<footer value="by XMGPS" />--> 
  18.  
  19.       <!-- 
  20.               %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 
  21.               %n(new line):换行 
  22.               %d(datetime):输出当前语句运行的时刻 
  23.               %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 
  24.               %t(thread id):当前语句所在的线程ID 
  25.               %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 
  26.               %c(class):当前日志对象的名称,例如: 
  27.               %f(file):输出语句所在的文件名。 
  28.               %l(line):输出语句所在的行号。 
  29.               %数字:表示该项的最小长度,如果不够,则用空格填充,如“%-5level”表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。 
  30.          --> 
  31.         <param name="ConversionPattern" value="datetime:%d thread id:[%t] line:%l class:%c - %m%n" /> 
  32.       </layout> 
  33.     </appender> 
  34.     <!-- Setup the root category, add the appenders and set the default priority --> 
  35.     <root> 
  36.       <level value="ALL" /> 
  37.       <!--文件形式记录日志--> 
  38.       <appender-ref ref="LogFileAppender" /> 
  39.     </root> 
  40.   </log4net> 
  41. </configuration> 

注意:将配置好的文件放置到您的可执行目录下;eg:

3.编写代码:

  
  
  
  
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.ComponentModel; 
  4. using System.Data; 
  5. using System.Drawing; 
  6. using System.Linq; 
  7. using System.Text; 
  8. using System.Windows.Forms; 
  9. using System.Reflection; 
  10. using log4net; 
  11.  
  12. //注意下面的语句一定要加上,指定log4net使用.config文件来读取配置信息 
  13. //如果是WinForm(假定程序为Log4netDemo.exe,则需要一个Log4netDemo.exe.config文件); 
  14. //将Log4netDemo.exe.config文件拷贝到可执行文件目录下; 
  15.  
  16. //[assembly: log4net.Config.XmlConfigurator(Watch = true)](在需要使用log4net的类的namespace处),如果没有这句就会在调试时得到如下留言中所说的“程序调试起来时isDebugEnable"的情况 
  17. //如果你嫌麻烦,只需要在包含Main()的类中加[assembly: log4net.Config.XmlConfigurator(Watch = true)] 
  18. [assembly: log4net.Config.XmlConfigurator(Watch = true)] 
  19. namespace Log4netDemo 
  20.     public partial class Form1 : Form 
  21.     { 
  22.         public Form1() 
  23.         { 
  24.             InitializeComponent(); 
  25.         } 
  26.  
  27.         private void bttnCreateLog_Click(object sender, EventArgs e) 
  28.         { 
  29.             //创建日志记录组件实例 
  30.             ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 
  31.             switch (comStyle.Text) 
  32.             { 
  33.                 case "致命错误"
  34.                     log.Fatal("Fatal"new Exception(txtMessage.Text)); 
  35.                     break
  36.                 case "一般错误"
  37.                     log.Error("Error"new Exception(txtMessage.Text)); 
  38.                     break
  39.                 case "警告信息"
  40.                     log.Warn("Warn"new Exception(txtMessage.Text)); 
  41.                     break
  42.                 case "一般信息"
  43.                     log.Info("Info"new Exception(txtMessage.Text)); 
  44.                     break
  45.                 case "调试信息"
  46.                     log.Debug("Debug"new Exception(txtMessage.Text)); 
  47.                     break
  48.                 default
  49.                     break
  50.             } 
  51.             MessageBox.Show("测试成功!"); 
  52.         } 
  53.  
  54.         private void comStyle_SelectedIndexChanged(object sender, EventArgs e) 
  55.         { 
  56.                switch (comStyle.Text) 
  57.             { 
  58.                 case "致命错误"
  59.                     txtMessage.Text = "致命错误!"
  60.                     break
  61.                 case "一般错误"
  62.                     txtMessage.Text="一般错误!"
  63.                     break
  64.                 case "警告信息"
  65.                     txtMessage.Text="警告信息!"
  66.                     break
  67.                 case "一般信息"
  68.                     txtMessage.Text="一般信息!"
  69.                     break
  70.                 case "调试信息"
  71.                     txtMessage.Text="调试信息!"
  72.                     break
  73.                 default
  74.                     break
  75.             } 
  76.         } 
  77.  
  78.     } 

如需要请参考上传的附件


 

你可能感兴趣的:(log4net,log4net示例,log4net范例,log4net实例)