一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

開源組件應(yīng)用系列:Log4net之基本配置(收藏)

 wyxhd2008 2013-03-21

log4net是大家在日常開發(fā)中非常用的一個(gè)開源組件,下載地址:http://logging./log4net/download_log4net.cgi。

Appdender常用配置

    下面介紹的最常用的配置中的幾種:

    1.ConoleAppender

 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline"/>
      </layout>
    </appender>

  2.FileAppender

 <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="log.txt"/>
      <appendToFile value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{yyyy/MM/dd HH:mm:ss} [current thread id:%thread] 
                           %-5level %logger [%property] - %message%newline"/>
      </layout>
    </appender>

  3.RollingFileAppender

   這個(gè)是記錄系統(tǒng)日志中最常用的。

 <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <file value="log/log" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <StaticLogFileName value="false"/>
      <CountDirection value="1"/>
      <datePattern value="yyyyMMdd""" />
      <maxSizeRollBackups value="50" />
      <maximumFileSize value="1MB" />
      <Encoding value="UTF-8" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date{yyyy/MM/dd HH:mm:ss} [%thread] %-5level %logger 
                           [%property{NDC}] - %message%newline" />
      </layout>
    </appender>

4.AdoNetAppender

使用SQLServer連接

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <!--specified log table definition  -->
      <![CDATA[
      CREATE TABLE [dbo].[Log] (
    [Id] [int] IDENTITY (1, 1) NOT NULL,
    [Date] [datetime] NOT NULL,
    [Thread] [varchar] (255) NOT NULL,
    [Level] [varchar] (50) NOT NULL,
    [Logger] [varchar] (255) NOT NULL,
    [Message] [varchar] (4000) NOT NULL,
    [Exception] [varchar] (2000) NULL
)
      ]]>
      <bufferSize value="100" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data,
                      Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="Data Source=.;Initial Catalog=MyTest;User ID=sa;Password=password" />
      <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) 
                   VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
      <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>
      <parameter>
        <parameterName value="@exception" />
        <dbType value="String" />
        <size value="2000" />
        <layout type="log4net.Layout.ExceptionLayout" />
      </parameter>
    </appender>

oracle數(shù)據(jù)庫中,使用ODP.NET連接:

 

<appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender">
      <!--specified log table definition  -->
      <![CDATA[
      create table log (
      Datetime timestamp(3),
      Thread varchar2(255),
      Log_Level varchar2(255),
      Logger varchar2(255),
      Message varchar2(4000)
      );
      ]]>

      <!--<connectionType value="System.Data.OracleClient.OracleConnection, System.Data.OracleClient,
      Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />-->
      <connectionType value="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, 
                      Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342" />
      <connectionString value="Data Source=databasename;User ID=username;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>

  目前開發(fā)的系統(tǒng)中,我比較傾向于使用ODP.NET組件來訪問oracle,它要比微軟的提供OracleClient效率要高,而且操作很方便。

Logger配置

  <root>
      <level value="ERROR" />
      <appender-ref ref="FileAppender" />
      <appender-ref ref="ConsoleAppender" />
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
    <logger name="RollFileLog">
      <level value="INFO"/>
      <appender-ref ref="RollingLogFileAppender"/>
      <appender-ref ref="ConsoleAppender" />
    </logger>
    <logger name="SQLDBLog">
      <level value="INFO"/>
      <appender-ref ref="AdoNetAppender"/>
      <appender-ref ref="ConsoleAppender" />
    </logger>
    <logger name="Oracle10gLog">
      <level value="INFO"/>
      <appender-ref ref="AdoNetAppender_Oracle"/>
      <appender-ref ref="ConsoleAppender" />
    </logger>

  需要注意的是,root節(jié)點(diǎn)中配置的level級別,可以被繼承到logger中。

使用log4net

使用logtnet是,需要首先加載配置文件,然后在實(shí)例化需要制定使用的logger。

加載配置文件的方式一般使用XmlConfigurator.Configure來加載,在assembly.cs文件中加載可以最為方便,C/S、B/S系統(tǒng)均可以使用。

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

參數(shù)Watch=true表示日志組件監(jiān)視配置文件發(fā)生更改。

//log4net.Config.XmlConfigurator.Configure();
            //log4net.ILog log = log4net.LogManager.GetLogger("RollFileLog");
            //log4net.ILog log = log4net.LogManager.GetLogger("SQLDBLog");
            //log4net.ILog log = log4net.LogManager.GetLogger("Oracle10gLog");
            //XmlConfigurator.Configure(new System.IO.FileInfo(@"..\..\Config\Log4net.config"));
            ILog log = LogManager.GetLogger("MySQLDB");
            log.Info("this is my log file test.");
            log.Error("this is my log file test->error.");
          
            log.Fatal("test");

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲av在线视频一区| 国产a天堂一区二区专区| 好吊妞在线免费观看视频| 99少妇偷拍视频在线| 98精品永久免费视频| 五月婷婷综合缴情六月| 人妻少妇久久中文字幕久久| 国产又粗又猛又大爽又黄同志| 亚洲精品中文字幕一二三| 亚洲国产精品无遮挡羞羞| 欧美不卡高清一区二区三区| 91欧美亚洲精品在线观看| 亚洲综合激情另类专区老铁性| 九九热精彩视频在线播放| 在线免费不卡亚洲国产| 日韩精品福利在线观看| 国产av熟女一区二区三区四区 | 草草视频福利在线观看| 午夜成年人黄片免费观看| 亚洲国产91精品视频| 国产日韩欧美一区二区| 日本一本在线免费福利| 日本黄色录像韩国黄色录像| 亚洲最新中文字幕在线视频| 日本精品中文字幕在线视频| 日韩欧美一区二区不卡看片| 久久国产亚洲精品赲碰热| 欧美精品二区中文乱码字幕高清 | 国产精品一区二区高潮| 欧美日韩精品一区免费 | 国产精品视频一级香蕉| 四季av一区二区播放| 日韩性生活片免费观看| 男女一进一出午夜视频| 自拍偷拍一区二区三区| 少妇特黄av一区二区三区| 国产伦精品一一区二区三区高清版 | 五月婷婷综合缴情六月| 99久久人妻精品免费一区| 夫妻性生活真人动作视频| 国产又粗又长又大的视频|