Log4Net应用指南

Log4Net应用指南
   我们在项目开发中尤其在开发比较大的项目日志是一定少不了的,因为我们在调试程序阶段会常常用到的,特别程序被部署以后就不太可能再利用专门的调试工具了,程序维护人员可能需要有一套强大的日志系统来诊断和修复配置上的问题。
   在J2EE项目中Apache的Log4j是大家最熟悉不过的日志系统,其实Apache也提供了其的姊妹系统Log4Net,顾名思义log4net是基于.Net开发的,它拥有和log4j一样强大的记录日志的功能,它可以将日志分不同的等级,比不同的样式,将日志输出到不同的媒介在SDE开发集成环境中的日志系统也是采用Log4Net,下面对其配置,应用加以介绍。
官方网站的配置例子: http://logging.apache.org/log4net/release/config-examples.html
一,Log4net核心组成
Log4net主要由四个部分组成,分别是Logger(记录器), Repository(库), Appender(附着器)以及 Layout(布局)。

二,配置标签是由logger和appender组成的.
Logger记录日志的分类其能够以多种方式输出日志,支持的日志输出常用的主要媒介有数据库(包括 SQLServer,Access,oracle8i,oracle9i,,DB2等等),控制台,文件,事件日志可以用事件查看器查看和邮件等多种方式。Log4net支持多种级别的日志,优先级从高到低排列如下:
FATAL > ERROR > WARN . INFO .> DEBUG
此外还有ALL(允许所有的日志请求)和OFF(拒绝所有的日志请求)这两种提出的级别。
    Appender决定日志输出的方式appender标签有两个重要的子节点fillter和layout。
     Fiter负责过滤你想要得到的日志界别或包含特出的字符串。
     Layout负责日志输出的样式。

三,配置
1) 创建一个.Net项目中引入log4net.dll文件.
2) 项目里新建一个配置文件log4net.config,配置如下(下面就以SDE中的一本程序配置加以说明)


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
   <!--配置系统完全分析配置文件以收集配置信息,当遇到在 configSections 节中没有相应条目的配置节时引发异常。 对于那些不是由 System.Configuration 类型处理的节,提供了新的包装类型 IgnoreSection。这是为了避免配置文件分析异常。 
出于兼容目的,还提供了 IgnoreSectionHandler-->
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler" />
  </configSections>
  <log4net>
RollingFileAppender将日志以回滚文件的形式写到文件中。
    <appender name="ApplicationLogFileAppender"  type="log4net.Appender.RollingFileAppender">
        <!--输出日志文件的路径-->
 <file value="ApplicationLog.log" />
<!--输出日志文件的编码格式-->
      <encoding value="Shift_JIS" />
<!--输出日志时自动向后追加-->
      <appendToFile value="true" />
<!--防止多线程时不能写Log,官方说线程非安全,但实际使用时,本地测试正常,部署后有不能写日志的情况-->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--置为true,当前最新日志文件名永远为file节中的名字-->
      <staticLogFileName value="false" />
        <!--日志以大小作为备份样式,还有一种方式是Date(日期)-->
      <rollingStyle value="size" />
      <countDirection value="-1" />
<!--单个日志的最大容量,(可用的单位:KB|MB|GB)不要使用小数,否则会一直写入当前日志-->
      <maximumFileSize value="1MB" />
        <!--日志最大个数,都是最新的-->
      <maxSizeRollBackups value="10" />
      <datePattern value='"."yyyy-MM-dd".log"' />
      <layout type="log4net.Layout.PatternLayout">      

<conversionPattern value="%d{yyyy/MM/dd,HH:mm:ss.fff},[%-5level],%message%newline" />
      </layout>
    </appender>
    <appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="ErrorLog.log" />
      <encoding value="Shift_JIS" />
      <appendToFile value="true" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <staticLogFileName value="false" />
      <rollingStyle value="size" />
      <countDirection value="-1" />
      <maximumFileSize value="1MB" />
      <maxSizeRollBackups value="10" />
      <datePattern value='"."yyyy-MM-dd".log"' />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%d{yyyy/MM/dd,HH:mm:ss.fff},[%-5level],%message%newline" />
      </layout>
    </appender>
    <logger name="ApplicationLog">
      <!-- 如果没有定义LEVEL的值,则缺省为DEBUG -->
       <level value="ALL" />
       <!--定义了appender的NAME及TYPE属性,以及使用param为其指定参数后(也可以没有参数),一个appender就建立了,你可以使用他的名字在LOGGER的<appender-ref中去 引用它,那么,引用它的LOGGER在写入日志时,就是写到了APPENDER中定义的介质中去了-->
      <appender-ref ref="ApplicationLogFileAppender" />
    </logger>
    <logger name="ErrorLog" >
      <level value="ERROR" />
      <appender-ref ref="ErrorLogFileAppender" />
    </logger>
  </log4net>
</configuration>


你可能感兴趣的:(apache,多线程,log4j,.net,db2)