log4net配置与使用

初次由java转做c#项目,研究了一下log4net的使用。

1. 首先从apache网站下载log4net, http://logging.apache.org/log4net/download_log4net.cgi 。我下的是最新版本 log4net-1.2.11-bin-newkey

2. 将 \bin\net\4.0\release\log4net.dll 复制到你的项目中 。

3. 将log4net.dll 添加引用到你的项目中。

4. 添加如下内容到 assemblyinfo.cs。

[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [assembly: log4net.Config.XmlConfigurator(ConfigFile="Log4Net.config", Watch=true)]  

 注意: ConfigFile 可以指定相对路径 和 绝对路径。 eg: /log/xxxx.log  或者 d://log//xxxx.log

 

5.在项目中创建一个新的log4net的配置文件Log4Net.config。

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8" ?>  
    <configuration>  
      <configSections>  
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
        <!--配置一个结点 名称为log4net-->
      </configSections>
      
      <!-- 添加log4net配置节点--> 
      <log4net debug="true">


          <root>
            <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
            <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
            <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
            <level value="DEBUG" />
            <appender-ref ref="RollingLogFileAppender" />
          </root>


          <!--定义的是日志记录到文件的附着器 name表示该附着器的名称-->
          <!--在log4net中还有一个附着器RollingFileAppender 它表示会循环生成很多文件,举例来说,就是设置一共可以生成20个文件,每个文件的大小为2K,那么如果第一个文件的大小超过2K,就会自动创建一个按顺序命名的文件-->
          <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">


            <!--日志记录的存在路径-->
            <!--file可以指定具体的路径 eg : d:\\test.log。不指定的话log被生成在项目的bin/Debug 或者 bin/Release目录下 (web的项目 默认生成在根目录下)-->
            <file value="applicationLog.log" />


            <!--多线程时采用最小锁定-->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>


            <!--为true就表示日志会附加到文件,为false,则会重新创建一个新文件-->
            <appendToFile value="true" />


            <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
            <!--<datePattern value="(yyyyMMdd)"/>  -->


            <!--变换的形式为日期,这种情况下每天只有一个日志-->
            <!--此时MaxSizeRollBackups和maximumFileSize的节点设置没有意义-->
            <!--<rollingStyle value="Date"/>-->
            <rollingStyle value="Size" />


            <!--每天记录的日志文件个数,与maximumFileSize配合使用-->
            <!--备份log文件的个数最多10个-->
            <maxSizeRollBackups value="10" />
            
            <!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。-->        
            <!--可用的单位:KB|MB|GB-->
            <!--不要使用小数,否则会一直写入当前日志-->
            <maximumFileSize value="2MB" />
            
            <staticLogFileName value="true" />
            
            <!--指定log的格式-->
            <layout type="log4net.Layout.PatternLayout">


              <!--输出内容控制-->
              <conversionPattern value="[%date]  %thread -- %-5level -- %logger [%M] -- %message%newline" />  
              
            </layout>  
          </appender>       
       </log4net>  
    </configuration> 

注意:根据第4步的配置,应该把log4net的配置文件放到项目的bin/Debug 或者 bin/Release目录下,否则会出现找不到配置文件而无法创建logger对象。

(web的项目,直接放在web项目的根目录下即可)   

其中layout节点的配置说明:
        %m(message):输出的日志消息;
        %n(newline):换行;
        %d(datetime):输出当前语句运行的时刻;
        %r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数;
        %t(threadid):当前语句所在的线程ID ;
        %p(priority): 日志的当前日志级别;
        %c(class):当前日志对象的名称;
        %L:输出语句所在的行号;
        %F:输出语句所在的文件名; 
        %-10:表示最小长度为10,如果不够,则用空格填充;

6. 然后代码如下:

  1. using System;  
  2. using System.Reflection;  
  3. using log4net;  
  4. using log4net.Config;  
  5. namespace Log4Net1001  
  6. {  
  7.     class Program  
  8.     {  
  9.         static void Main(string[] args)  
  10.         {  
  11.             Console.WriteLine("Begin Run");  
  12.             XmlConfigurator.Configure();  
  13.             Type type = MethodBase.GetCurrentMethod().DeclaringType;  
  14.             ILog m_log = LogManager.GetLogger(type);  
  15.             m_log.Debug("这是一个Debug日志");  
  16.             m_log.Info("这是一个Info日志");  
  17.             m_log.Warn("这是一个Warn日志");  
  18.             m_log.Error("这是一个Error日志");  
  19.             m_log.Fatal("这是一个Fatal日志");  
  20.             Console.WriteLine("End");  
  21.             Console.ReadLine();  
  22.         }  
  23.     }  
  24. }  


7. 运行你的项目,打出的log结果

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. [2012-06-26 14:14:34,862]  1 -- DEBUG -- LogTest.Program [Main] -- this is the log4net log test.  
  2. [2012-06-26 14:14:34,877]  1 -- INFO  -- LogTest.Program [Main] -- this is the info..........................................  
  3. [2012-06-26 14:14:34,878]  1 -- INFO  -- LogTest.Program [print] -- this method is print()  
  4. [2012-06-26 14:14:34,878]  1 -- ERROR -- LogTest.Program [print] -- error test  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值