zoukankan      html  css  js  c++  java
  • Log4net使用笔记

    Log4net使用笔记

     

    编写人:CC阿爸

     

    2013-10-29

     

    •  近来在处理项目时候,想将系统的操作日志以文本的形式记录下来,方便对系统操作记录进行追踪。

    经过在网上搜索部分解决方案,大致可以归纳如下,并在当前环境下测试成功

    首先说明一点的是,log4net解决的问题是提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中,一般来说我们只需要提供一个描述性的字符串,然后log4net就会自动提供有关运行时的一些信息。

    Log4Net的版本仍是1.2.10,有.NET1.0和.NET1.1和.NET2.0版本,如果有正在使用高于.NET2.0开发的也不用担心,可以直接引用这个类库,像在.NET2.0中开发一样,它的网址是:http://logging.apache.org/log4net/

    关于在Web中支持的问题

    在我们开发项目时都会使用到config文件,可以在config文件中配置log4net。这一点Web项目和WinForm项目都是一样的。需要注意的是,因为在Web项目中一般以较低权限的角色来运行Web项目的,所以在使用文件型日志时要注意不要放在本项目根文件夹之外。

    •   在config文件中的配置

    要使用log4net,首先要在config文件的<configSections>节点中增加配置(如果没有这个节点请手动增加),如下:

     <configSections> 
    
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> 
    
    </configSections> 

    可将config文件配置在app.config中,也可以单独生成一个config文件,我在这里是单独使用了log4net.config

    <?xml version="1.0" encoding="utf-8"?>
    
    <configuration>
    
      <configSections>
    
        <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
    
      </configSections>
    
      <log4net>
    
        <root>
    
          <!--文件形式记录日志-->
    
         <!--<appender-ref ref="LogFileAppender" />-->    
    
          <!--控制台控制显示日志-->
    
         <<!--appender-ref ref="ConsoleAppender" />-->
    
          <!--Windows事件日志-->
    
         <!--<appender-ref ref="EventLogAppender" />-->
    
          <!--SQLite事件日志-->
    
          <!--<appender-ref ref="AdoNetAppender_SQLite" />-->
    
          <!--RollingFileAppender事件日志-->
    
          <!--<appender-ref ref="RollingFileAppender" />-->
    
          <!--RollingFileAppender事件日志,每天一个日志-->
    
          <appender-ref ref="RollingLogFileAppender_DateFormat" />
    
          <!-- 如果不启用相应的日志记录,可以通过这种方式注释掉  -->
    
          <!--appender-ref ref="AdoNetAppender_Access" />-->
    
        </root>
    
        <appender name="RollingLogFileAppender_DateFormat" type="log4net.Appender.RollingFileAppender">
    
     
    
          <!--日志的路径--><!--
    
                <file value="log/log" />
    
          --><!--是否覆盖,默认是追加true--><!--
    
                <appendToFile value="true"/>
    
          --><!--文件名称--><!--
    
                <DatePattern value="yyyyMMdd &quot;.txt&quot;"></DatePattern>
    
          --><!--设置无限备份=-1 ,最大备份数为1000--><!--
    
                <maxSizeRollBackups value="1000"/>
    
          --><!--每个文件的最大20k--><!--
    
                <maximumFileSize value="20"/>
    
          --><!--名称是否可以更改,为false为可以更改--><!--
    
                <param name="StaticLogFileName" value="false" />
    
                <param name="RollingStyle" value="Composite" />
    
                <layout type="log4net.Layout.PatternLayout">
    
                  <param name="ConversionPattern" value="%d [%r] [%t] %-5p %c  - %m%n%n" />
    
                </layout>-->
    
     
    
          <file value="log.txt" />
    
          <DatePattern value="yyyyMMdd &quot;.txt&quot;"></DatePattern>
    
          <appendToFile value="true" />
    
          <rollingStyle value="Date" />
    
          <!--<datePattern value="yyyyMMdd-HHmm" />-->
    
          <datePattern value="yyyyMMdd" />
    
          <maximumFileSize value="200"/>
    
          <layout type="log4net.Layout.PatternLayout">
    
            <conversionPattern value="%date [%thread](%file:%line) %-5level %logger [%property{NDC}] - %message%newline" />
    
          </layout>
    
        </appender>
    
      </log4net>
    
    </configuration>
    
     
    •  要在AssemblyInfo.cs 新增

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

    或者:[assembly: log4net.Config.XmlConfigurator()]  (把log4net的配置在web的配置文件时)

    之前根据一示例设置了以下后出现登录的问题:

    [assembly: log4net.Config.DOMConfigurator(ConfigFileExtension = "config", Watch = true)]

    就出现了调试能登录系统,但编译后不能登录,系统老提示网络设置错误。具体是因何原因引起。仍没有弄明白,还望大家知道的能告知。所以不要使用这种方法。

    •  程序中调用:

     

                           

     //创建日志记录组件实例
    
                            ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
    
                            //ILog log = log4net.LogManager.GetLogger(typeof(Program));
    
                            ////记录错误日志
    
                            //log.Error("error", new Exception("在这里发生了一个异常,Error Number:" + random.Next()));
    
                            //记录严重错误
    
                            //log.Fatal("fatal", new Exception("在发生了一个致命错误,Exception Id:"+random.Next())); 
    
                            //记录一般信息
    
                            //log.Info("提示:系统正在运行");
    
                            //记录调试信息
    
                            //log.Debug("调试信息:debug");
    
                            //记录警告信息
    
                           log.Warn("警告:warn");

     

    •  系统根目录下就会生成(完成)

     

    另:有一个有关Log4Net使用说明的博客可参考。

    http://www.cnblogs.com/kissazi2/p/3389551.html

  • 相关阅读:
    Cooperate with Myself
    A brief introduction of myself
    计算1+11+111+1111+........
    Jav实现F(n)=F(n-1)+F(n-2)+.....+F(1)+1
    查找二维数组中是否有符合的目标值
    排序算法
    时间复杂度
    Java代码实现单例模式
    查找一个字符串中重复出现字符的个数
    null,“”,empty的区别
  • 原文地址:https://www.cnblogs.com/bribe/p/3451657.html
Copyright © 2011-2022 走看看