一、作用                            

 提供一个记录日志的框架,可以将日志信息记录到文件、控制台、Windows事件日志和数据库(MSSQL、Acess、Oracle、DB2和SQLite等)。

 

二、先看看示例,感受一下吧                    

config配置文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
  <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
</configSections>
<log4net>
  <!-- 定义日志的输出媒介 -->
  <root>
    <appender-ref ref="ConsoleAppender"/>
    <appender-ref ref="R"/>
  </root>
  <!-- 定义输出到控制台 -->
  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
    </layout> 
  </appender>
  <!-- 定义输出到日志文件 -->
  <appender name="R" type="log4net.Appender.FileAppender" rollingStyle="Date" datePattern="yyyyMMdd-HH:mm:ss">
    <file value="logs/log.txt"></file>
    <appendToFile value="true"></appendToFile>
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-d{yyyy-MM-dd HH\:mm\:ss}  [%L] [%c]-[%p] %m%n"></conversionPattern> 
    </layout>
  </appender>
</log4net>
</configuration>

cs文件

/**
 * 指定log4net使用.config文件来读取配置信息
 * 若为Winform(假定程序为Demo.exe), 那么配置文件则为Demo.exe.config
 * 若为Webform,则为web.config
 */
[assembly:log4net.Config.XmlConfigurator(Watch=true)]
namespace Demo{
  public class MainClass{
    public static void Main(String[] args){
    ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
        log.Error("error", new Exception("there is an exception"));
        log.Fatal("fatal", new Exception("there is a deadly exception occurs"));
    log.Info("info");
    log.Debug("debug");
    log.Warn("warn");
    Console.Read();
    }
  }
}

 

三、框架的核心组件                         

 1. Appender

  作用:用于定义日志信息的输出介质(文件、控制台、Windows事件日志和数据库(MSSQL、Acess、Oracle、DB2和SQLite等))
  内置的Appdner组件:

     ConsoleAppender ,输出介质为控制台

       FileAppender     ,输出介质为文件,示例如下

<appender name="FileAppender" type="log4net.Appender.FileAppender"
 file="logs/log.txt" appendToFile="true">
  <layout type="log4net.Layout.PatternLayout">
    ..........
  </layout>
</appender>

            RollingFileAppender ,将日志以回滚文件的形式写入文件中。可以指定文件最大容量,当超过就生成一个新文件来记录,且可以指定最多生成日志文件数量,当超过时则覆盖从第一个日志文件开始循环覆盖。

示例1:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" 
 file="logs/log.txt" appendToFile="true" rollingStyle="Size" maxSizeRollBackups="10" maximumFileSize="100KB" staticLogFileName="true">
  <layout type="log4net.Layout.PatternLayout">
    ..........
  </layout>
</appender>

示例2:

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" 
file="logs/log.txt" appendToFile="true" rollingStyle="Date" datePattern="yyyyMMdd">
  <layout type="log4net.Layout.PatternLayout">
    ..........
  </layout>
</appender>

           EventLogAppender ,输出介质为系统日志

           AdoNetAppender    ,输出介质为数据库,示例如下

<appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender"> 
      <connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient" /> 
      <connectionString value="data source=[mydatabase];User ID=[user];Password=[password]" /> 
      <commandText value="INSERT INTO Log (Datetime,Thread,Log_Level,Logger,Message) VALUES (:log_date, :thread, :log_level, :logger, :message)" /> 
      <bufferSize value="128" /> 
      <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> 
    </appender> 
View Code

相关文章: