网上已经有很多关于Log4Net的用法的文章,本人还在写的原因是希望与大家多交流和加深印象。在此也感谢 长风破浪。我是在他的文章基础上学习Log4Net的用法的;现在我将分以下几步介绍我发法的过程。
      首先:建立项目并添加Log4Net的引用,你可以到http://logging.apache.org/log4net/downloads.html上去下载。
      其次: 在文件AssemblyInfo.cs下面加入

[assembly:log4net.Config.XmlConfigurator(ConfigFile="XMLFile1.xml",Watch=true)]   

其中是ConfigFile="XMLFile1.xml" 是你的配置文件名称,并在文件Global.asaxprotected void Application_Start(Object sender, EventArgs e)中加上 log4net.Config.XmlConfigurator.Configure();
      再次:就是配制Log4Net需要的配制文件了,这里有两中方式:一种是写文本文档,一种是写到数据库;

   写到文本文档的配制方式为:

<?xml version="1.0" encoding="utf-8" ?>  
 
<configuration>  
 
  
<configSections>  
 
    
<section name="log4net"  
 
      type
="log4net.Config.Log4NetConfigurationSectionHandler,  
 
            log4net
-net-1.0"  
 
    
/>  
 
  
</configSections>  
 
   
 
  
<log4net debug="false">

      
<!-- 定义根日志对象 里面只有两个属性 level 和 appender-ref

           level 一个

           appender
-ref 可以多个 即定义支持使用的多个Appender对象

        
-->

     
<root>

        

        
<level value="DEBUG" />

        
<appender-ref ref="LogFileAppender" />

    
</root>

    
<!-- 具体定义支持某个Appender对象

         LogFileAppender为Appender对象的名称

         type为Appender对象的类型

            有如下的

             log4net.Appender.AdoNetAppender;

            log4net.Appender.UdpAppender;

           log4net.Appender.ConsoleAppender

           在命名空见log4net.Appender下面还有很多

           如果下载了,去文件:log4net
-1.2.10\doc\release\config-examples.html

           上面还有很多例子 

           

           不同的Appender对象还有不同的param 

           具体可以去config
-examples.html

        
-->

     
<appender name="LogFileAppender" type="log4net.Appender.FileAppender" >

         
<!-- 

            定义文件和文件的路径 ,特别注意 

            如果未有指定路径有可能出现错误 ,具体原因目前不清楚

            

         
-->

         
<param name="File" value="E:\Applog.txt" />

         

         
<param name="datePattern" value="yyyy-MM-dd HH:mm" />

         
<!-- 

          
-->

         
<param name="AppendToFile" value="true" />

         
<!-- 

          
-->

         
<layout type="log4net.Layout.PatternLayout">

             
<param name="ConversionPattern" value="%d [%t] %-%L-%F-5p %c [%x] - %m%n" />

         
</layout>

     
</appender>

</log4net>


 
</configuration> 

level  是他的级别,主要取值

Level有以下几种取值

级别

允许的方法

Boolean属性

优先级别

OFF

 

 

Highest

FATAL

void Fatal(...);

bool IsFatalEnabled;

 

RROR

void Error(...);

bool IsErrorEnabled;

 

WARN

void Warn(...);

bool IsWarnEnabled;

 

INFO

void Info(...);

bool IsInfoEnabled;

 

DEBUG

void Debug(...);

bool IsDebugEnabled;

 

ALL

 

 

Lowest

              <param name="File" value="E:\Applog.txt" />
               文件保存的地址 

               <param name="datePattern" value="yyyy-MM-dd HH:mm" />
               日期的格式
                   <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
               写入日志的基本信息;我看见了的有以下几种:
               %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息

%n(new line):换行

%d(datetime):输出当前语句运行的时刻

%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数

%t(thread id):当前语句所在的线程ID

%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等

%c(class):当前日志对象的名称,例如:

       模式字符串为:%-10c -%m%n

       代码为:

ILog log=LogManager.GetLogger(“Exam.Log”);

log.Debug(“Hello”);

    则输出为下面的形式:

Exam.Log       - Hello

%L:输出语句所在的行号

%F:输出语句所在的文件名

%-数字:表示该项的最小长度,如果不够,则用空格填充

例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:

176 [main] INFO  org.foo.Bar - Located nearest gas station.
第二种写入数据库的方式:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration>  
 
<configSections>

 
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

</configSections>

<log4net debug="false">

    
<root>

    
<level value="ALL" />           

    
<appender-ref ref="ADONetAppender" />       

    
</root>

    
<!--

     定义loger的名称和使用的appender

    
-->

    
<logger name="AA"> 

    
<level value="ALL"/>            

    
<appender-ref ref="ADONetAppender" />                   

    
</logger>        

    
<appender name="ADONetAppender" type="log4net.Appender.AdoNetAppender">

     
<!--

     定义几条存入数据库 有2条时才写入数据库,没有两条叫缓存

    
-->

     
<bufferSize value="2" />

     
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

     
<connectionString value="database=test;server=.;User ID=sa;Password=" />

     
<commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />

     
<parameter>

          
<parameterName value="@log_date" />

          
<dbType value="DateTime" />

          
<layout type="log4net.Layout.RawTimeStampLayout" />

     
</parameter>

     
<parameter>

          
<parameterName value="@thread" />

          
<dbType value="String" />

         
<size value="255" />

          
<layout type="log4net.Layout.PatternLayout">

              
<conversionPattern value="%thread" />

          
</layout>

     
</parameter>

     
<parameter>

          
<parameterName value="@log_level" />

          
<dbType value="String" />

         
<size value="50" />

          
<layout type="log4net.Layout.PatternLayout">

              
<conversionPattern value="%level" />

          
</layout>

     
</parameter>

     
<parameter>

          
<parameterName value="@logger" />

          
<dbType value="String" />

         
<size value="255" />

          
<layout type="log4net.Layout.PatternLayout">

              
<conversionPattern value="%logger" />

          
</layout>

     
</parameter>

     
<parameter>

          
<parameterName value="@message" />

          
<dbType value="String" />

         
<size value="4000" />

          
<layout type="log4net.Layout.PatternLayout">

              
<conversionPattern value="%message" />

          
</layout>

     
</parameter>

     
<parameter>

          
<parameterName value="@exception" />

          
<dbType value="String" />

         
<size value="2000" />

          
<layout type="log4net.Layout.ExceptionLayout" />

     
</parameter>

</appender>

</log4net>


 
</configuration> 


注意数据库联接,还有参数等;   
      最后:在你需要的地方引用
log4net.ILog log = log4net.LogManager.GetLogger("guojiang"); 
            log.Info(
"werwesdfsd!"); 
接OK了
posted on 2006-10-19 17:40  过江  阅读(1766)  评论(2编辑  收藏  举报