Asp.net2.0 配置log4net 具体方法

step1: 当然是下载了,具体地址http://logging.apache.org/log4net/download.html (正式版已发布)那就下载1.2.10.zip版 的吧,解压后得到net里的2.0的.

step2: 在你想要用日志的工程里添加引用即可.

step3: 在web.config里加入以下代码:

          

  1. <!--配置log4net-->   
  2.   <configSections>   
  3.     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>   
  4.        
  5.   </configSections>   
  6.  <log4net>   
  7.     <!--日志记录器logger,可以有多个-->   
  8.     <logger name="AppLogger">   
  9.       <level value="INFO" />   
  10.       <appender-ref ref="LogFileAppender" />   
  11.       <appender-ref ref="ConsoleAppender" />   
  12.     </logger>   
  13.     <logger name="Form1">   
  14.       <level value="DEBUG" />   
  15.       <appender-ref ref="LogFileAppender" />   
  16.     </logger>   
  17.     <appender name="LogFileAppender" type="log4net.Appender.FileAppender">   
  18.       <param name="File" value="App.txt" />   
  19.       <param name="AppendToFile" value="true" />   
  20.       <layout type="log4net.Layout.PatternLayout">   
  21.         <param name="Header" value="[Header]\r\n" />   
  22.         <param name="Footer" value="[Footer]\r\n" />   
  23.         <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] %X{auth} - %m%n" />   
  24.       </layout>   
  25.       <filter type="log4net.Filter.LevelRangeFilter">   
  26.         <param name="LevelMin" value="DEBUG" />   
  27.         <param name="LevelMax" value="FATAL" />   
  28.       </filter>   
  29.     </appender>   
  30.     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">   
  31.       <layout type="log4net.Layout.PatternLayout">   
  32.         <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] %X{auth} - %m%n" />   
  33.       </layout>   
  34.     </appender>   
  35.   </log4net>   
  36. <!--结束配置log4net-->  

 

          对以上代码解释:

         

  1. 你可以直接将上面的文本拷贝到任何程序中使用,但是最好还是能够理解配置文件是怎样构成的。 只有当你需要在应用程序配置文件中使用log4net配置时,才需要在<configSection>标签中加入<section>配置节点入口。对于其他的单独文件,只有<log4net>标签内的文本才是必需的,这些标签的顺序并不是固定的。下面我们依次讲解各个标签内文本的含义:   
  2. 3.1.1     <root>  
  3. <root>  
  4.   <level value="WARN" />  
  5.   <appender-ref ref="LogFileAppender" />  
  6.   <appender-ref ref="ConsoleAppender" />  
  7. </root>  
  8.     
  9. 在框架的体系里,所有的日志对象都是根日志(root logger)的后代。 因此如果一个日志对象没有在配置文件里显式定义,则框架使用根日志中定义的属性。在<root>标签里,可以定义level级别值和Appender的列表。如果没有定义LEVEL的值,则缺省为DEBUG。可以通过<appender-ref>标签定义日志对象使用的Appender对象。<appender-ref>声明了在其他地方定义的Appender对象的一个引用。在一个logger对象中的设置会覆盖根日志的设置。而对Appender属性来说,子日志对象则会继承父日志对象的Appender列表。这种缺省的行为方式也可以通过显式地设定<logger>标签的additivity属性为false而改变。   
  10. <logger name="testApp.Logging" additivity="false">  
  11. </logger>  
  12. Additivity的值缺省是true.   
  13.     
  14.     
  15. 3.1.2     <Logger>  
  16. <logger name="testApp.Logging">  
  17.   <level value="DEBUG"/>  
  18. </logger>  
  19.     
  20. <logger> 元素预定义了一个具体日志对象的设置。然后通过调用LogManager.GetLogger(“testAPP.Logging”)函数,你可以检索具有该名字的日志。如果LogManager.GetLogger(…)打开的不是预定义的日志对象,则该日志对象会继承根日志对象的属性。知道了这一点,我们可以说,其实<logger>标签并不是必须的。   
  21.     
  22.     
  23. 3.1.3     <appender>  
  24.     
  25. <appender name="LogFileAppender"  
  26.           type="log4net.Appender.FileAppender" >  
  27.   <param name="File" value="log-file.txt" />  
  28.   <param name="AppendToFile" value="true" />  
  29.   <layout type="log4net.Layout.PatternLayout">  
  30.     <param name="Header" value="[Header]\r\n" />  
  31.     <param name="Footer" value="[Footer]\r\n"/>  
  32.     <param name="ConversionPattern"  
  33.       value="%d [%t] %-5p %c - %m%n"  
  34.     />  
  35.   </layout>  
  36.   <filter type="log4net.Filter.LevelRangeFilter">  
  37.     <param name="LevelMin" value="DEBUG" />  
  38.     <param name="LevelMax" value="WARN" />  
  39.   </filter>  
  40. </appender>  
  41.     
  42. <root>标签或单个的<logger>标签里的Appender对象可以用<appender>标签定义。<appender>标签的基本形式如上面所示。它定义了appender的名字和类型。 另外比较重要的是<appender>标签内部的其他标签。不同的appender有不同的<param>标签。在这里,为了使用FileAppender,你需要一个文件名作为参数。另外还需要一个在<appender>标签内部定义一个Layout对象。Layout对象定义在它自己的<layout>标签内。<layout>标签的type属性定义了Layout的类型(在本例里是PatternLayout),同时也确定了需要提供的参数值。Header和Footer标签提供了一个日志会话(logging session)开始和结束时输出的文字。有关每种appender的具体配置的例子,可以在log4net\doc\manual\example-config-appender.html中得到。   
  43.     
  44. 3.1.4     log4net.Layout.PatternLayout中的转换模式(ConversionPattern)   
  45. %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息   
  46. %n(new line):换行   
  47. %d(datetime):输出当前语句运行的时刻   
  48. %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数   
  49. %t(thread id):当前语句所在的线程ID   
  50. %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等   
  51. %c(class):当前日志对象的名称,例如:   
  52.        模式字符串为:%-10c -%m%n   
  53.        代码为:   
  54. ILog log=LogManager.GetLogger(“Exam.Log”);   
  55. log.Debug(“Hello”);   
  56.     则输出为下面的形式:   
  57. Exam.Log       - Hello   
  58. %L:输出语句所在的行号   
  59. %F:输出语句所在的文件名   
  60. %-数字:表示该项的最小长度,如果不够,则用空格填充   
  61. 例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:   
  62. 176 [main] INFO  org.foo.Bar - Located nearest gas station.   
  63.     
  64. 3.1.5     <filter>  
  65. 最后,让我们看看在Appender元素里的<filter>标签。它定义了应用到Appender对象的过滤器。本例中,我们使用了LevelRangeFilter过滤器,它可以只记录LevelMin和LevelMax参数指定的日志级别之间的日志事件。可以在一个Appender上定义多个过滤器(Filter),这些过滤器将会按照它们定义的顺序对日志事件进行过滤。其他过滤器的有关信息可以在log4net的SDK文档中找到。   

 

step4: 在程序中加入Global.asax文件在文件加入以下代码

          

  1. void Application_Start(object sender, EventArgs e)    
  2.     {   
  3.         // 在应用程序启动时运行的代码   
  4.         string path = string.Format(AppDomain.CurrentDomain.BaseDirectory + "{0}""web.config");   
  5.         System.IO.FileInfo configFile = new System.IO.FileInfo(path);   
  6.         log4net.Config.XmlConfigurator.Configure(configFile);   
  7.     }  

 

step5: 在应用的地方引用logger,测试你以上综合4步的结果

        

  1. //前提 引用空间   
  2. using log4net;   
  3. //一个按钮的事件    
  4. protected void Button1_Click(object sender, EventArgs e)   
  5.     {   
  6.         ILog LOGGER = LogManager.GetLogger("AppLogger");   
  7.         //写入信息   
  8.         LOGGER.Info("测试信息");    
  9.     }  

 

大功告成。。。。。哈

总结

posted @ 2009-07-15 15:22  组长  阅读(665)  评论(0编辑  收藏  举报