Log4Net 日志 使用基本设置(转)

 log4net是一个开源日志记录组件。
      利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。
        我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。
        要想获取最新版本的log4net组件库,可以到官方网站 http://logging.apache.org/log4net/下载。

    log4net  有四种主要的组件,分别是 Logger (记录器) , Repository (库) , Appender (附着器)以及 Layout (布局)。
   Logger 是应用程序需要交互的主要组件,它用来产生日志消息。
  Repository主要用于负责用户对象组织结构的维护。
  Appendder定义目的地的输出介质。一个日志对象可以包含很多个Appendder,对每个Appendder通过设置参数进行不同的配置。
     Layout用于向用户显式最后经过格式化的输出消息。一个Appendder实现一个layout。

      定义配置文件
      (1)在log4net配置文件中进行定义
      (2)在应用程序中进行动态配置

(1)在配置文件中的定义基本设置如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <configSections>
      <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
   </configSections>
   <appSettings>
   </appSettings>
   <log4net> 
      <root>      
         <!-- 这里可省略日志输出级别,分别在不通的输出介质中定义-->

         <!--文件形式记录日志 -->
         <appender-ref ref="RollingFileAppender" />
         <!--控制台控制显示日志-->
         <appender-ref ref="ConsoleAppender" />
         <!--Windows事件日志-->
         <appender-ref ref="EventLogAppender" />
         <!--数据库事件日志-->
         <appender-ref   ref="AdoNetAppender" />
      </root>
   
   <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
      
      <!--定义输出到文件中-->
      <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
         <!--定义文件存放位置-->
         <file value="..\\..\\Output\\log\\" />
         <!--是否在文件中追加日志信息-->
         <appendToFile value="true" />
         <!--如果一直输出到同一文件中,则不需要下面代码-->     
      <!--文件输出以日期方式滚动-->
      <rollingStyle value="Date" />
      <!--日志文件名称以输出日期命名,可更改其他日期输出方式-->
      <datePattern value="yyyyMMdd'.log'" />
      <!--表明输出的日志信息是否一直在同一文件中-->
      <staticLogFileName value="false"/>
      <!--备份文件的最大文件数目-->
      <maxSizeRollBackups value="10" />       
         <!--输出格式-->
         <layout type="log4net.Layout.PatternLayout">
            <footer value="this log write by UIH use Log4Net"/>
            <conversionPattern value="�te >> %-5level %message%newline" />
         </layout>
         <!--日志输出级别-->
         <threshold value="ALL"/>
         <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="ALL" />
            <levelMax value="FATAL" />
           </filter>
      </appender>

       <!--定义输出到控制台命令行中-->
      <appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
         <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%n�te >> %-5level %message%newline" />
         </layout>
        <!--针对不同的输出级别显示不同的颜色-->
         <mapping>
            <level value="FATAL" />
            <foreColor value="Red" />
            <backColor value="White" />
         </mapping>
         <mapping>
            <level value="ERROR" />
            <foreColor value="Red, HighIntensity" />
         </mapping>
           <!--日志输出级别-->
         <threshold value="ALL"/>
         <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="ALL" />
            <levelMax value="FATAL" />
         </filter>
      </appender>
      
       <!--定义输出到windows事件中-->
        <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
            <layout type="log4net.Layout.PatternLayout">
               <conversionPattern value="%n�te >> %-5level thread: %thread, %message%newline" />
            </layout>
            <threshold value="ERROR"/>
           <filter type="log4net.Filter.LevelRangeFilter">
              <levelMin value="ERROR" />
              <levelMax value="FATAL" />
           </filter>
      </appender>

<!--定义输出到数据库中,本例以sqlServer为例-->
      <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <!--设置数据库输出的最小数量,建议设为1 ,若设为n,表示小于n条记录不输出到数据库-->
      <bufferSize value="1" />
            <ConnectionType  value = "System.Data.SqlClient.SqlConnection, System.Data, version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <ConnectionString  value = "data source=服务器名;initial catalog=数据库名;User ID=用户名;Password=密码;integrated security=false;persist security info=True;">
        <!--插入数据库的字段,item为字段名-->         
         <commandText value="INSERT INTO pacs_log ([dtDate],[ThreadID],[Level],[Logger],[Message],[Exception]) VALUES (@item1, @item2, @item3)" />
         <!--分级输出-->  
         <!--定义各个参数-->
         <parameter>
           <parameterName value="@item1" />
           <dbType value="DateTime" />
           <layout type="log4net.Layout.RawTimeStampLayout"/>
     </parameter>
     <parameter>
           <parameterName value="@item2" />
           <dbType value="String" />
           <size value="50" />
           <layout type="log4net.Layout.PatternLayout">
                 <conversionPattern value="%thread" />
           </layout>
     </parameter>
     <parameter>
           <parameterName value="@item3" />
           <dbType value="String" />
           <size value="200" />
           <layout type="log4net.Layout.PatternLayout">
                 <conversionPattern value="%level" />
           </layout>
     </parameter>
                  <threshold value="ERROR"/>
                                 <filter type="log4net.Filter.LevelRangeFilter">
                                    <levelMin value="ERROR" />
                                    <levelMax value="FATAL" />
                                 </filter>
      </appender> 
   </log4net>
</configuration>

(2)在应用程序中进行动态配置
        举例说明:
        AdoNetAppender中的ConnectionType,ConnectionString在程序中动态设置,如下
       log4net.Repository.Hierarchy.Hierarchy hier = log4net.LogManager.GetRepository() as log4net.Repository.Hierarchy.Hierarchy;
                  if (hier != null)
                  {   //get ADONetAppender  
                        log4net.Appender.IAppender[] appendders = hier.GetAppenders();
                        foreach (var appender in appendders)
                        {
                              if (appender is log4net.Appender.AdoNetAppender)
                              {
                                    log4net.Appender.AdoNetAppender adoAppender = (log4net.Appender.AdoNetAppender)appender;
                        adoAppender.ConnectionType = "System.Data.SqlClient.SqlConnection, System.Data, version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
                                    adoAppender.ConnectionString = "data source=uih-pacs\\uihpacs;initial catalog=uihpacsdb;User ID=sa;Password=uihpacs2012;integrated security=false;persist security info=True;";
                                    adoAppender.ActivateOptions();
                              }
                        }

            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值