首页 > 代码库 > [转]如何配置Log4Net使用Oracle数据库记录日志

[转]如何配置Log4Net使用Oracle数据库记录日志

本文转自:http://www.cnblogs.com/PatrickLiu/p/6012153.html

 

最近在做一个项目的时候,需要增加一个日志的功能,需要使用Log4Net记录日志,把数据插入到Oracle数据库,经过好久的研究终于成功了。把方法记录下来,以备以后查询。    直接写实现方法,分两步完成:     1、使用NuGet Manager管理工具,增加对Oracle.ManagedDataAccess.dll的引用。     2、配置具体的文件。<?xml version="1.0"?><configuration>  <configSections>    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />  </configSections>  <appSettings>    <add key="log4net.Internal.Debug" value=http://www.mamicode.com/"true "/>  </appSettings>    <log4net>    <!-- 产生数据的脚本     Create table T_LogHistory    (    id NUMBER not null,    log_date DATE not null,    log_thread VARCHAR2(50) not null,    log_level VARCHAR2(50) not null,    log_logger VARCHAR2(150) not null,    log_operator VARCHAR2(50) not null,    log_message VARCHAR2(500) not null,    log_iP VARCHAR2(50) not null,    log_machineName VARCHAR2(50) not null,    log_browser VARCHAR2(50) not null,    log_location VARCHAR2(500) not null,    log_exception VARCHAR2(1500) not null,    constraint pk_LogHistory primary key(id)    );        Create Sequence seq_LogHistory_ID    minvalue 1    maxvalue 9999999999999999999999999999    start with 1    increment by 1    nocache;    -->    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender,log4net">      <!--BufferSize为缓冲区大小,只有日志记录超设定值才会一块写入到数据库-->      <bufferSize value=http://www.mamicode.com/"1" />      <!--或写为<param name="BufferSize" value=http://www.mamicode.com/"10" />-->      <!--引用-->      <!--<connectionType value=http://www.mamicode.com/"System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>-->      <connectionType value=http://www.mamicode.com/"Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>            <!--连接数据库字符串-->      <connectionString value=http://www.mamicode.com/"Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=80))(CONNECT_DATA=http://www.mamicode.com/(SERVICE_NAME=databaseName)));User Id=*******;Password=*******;" />      <!--插入到表Log-->      <commandText value=http://www.mamicode.com/"insert into t_loghistory(id, log_date, log_thread, log_level, log_logger, log_operator, log_message, log_ip, log_machinename, log_browser, log_location, log_exception) values(SEQ_LOGHISTORY_ID.nextval, :logDate, :thread, :log_level, :logger, :operator, :message, :clientIP, :machineName, :browser, :location, :exception)" />      <!--日志记录时间,RawTimeStampLayout为默认的时间输出格式-->      <parameter>        <parameterName value=http://www.mamicode.com/":logDate" />        <dbType value=http://www.mamicode.com/"DateTime"/>        <layout type="log4net.Layout.RawTimeStampLayout"/>      </parameter>      <!--线程号-->      <parameter>        <parameterName value=http://www.mamicode.com/":thread" />        <dbType value=http://www.mamicode.com/"String" />        <!--长度不可以省略,否则不会输出-->        <size value=http://www.mamicode.com/"100" />        <layout type="log4net.Layout.PatternLayout">          <conversionPattern value=http://www.mamicode.com/"%thread" />        </layout>      </parameter>      <!--日志等级-->      <parameter>        <parameterName value=http://www.mamicode.com/":log_level" />        <dbType value=http://www.mamicode.com/"String" />        <size value=http://www.mamicode.com/"100" />        <layout type="log4net.Layout.PatternLayout">          <conversionPattern value=http://www.mamicode.com/"%level" />        </layout>      </parameter>      <!--日志记录类名称-->      <parameter>        <parameterName value=http://www.mamicode.com/":logger" />        <dbType value=http://www.mamicode.com/"String" />        <size value=http://www.mamicode.com/"200" />        <layout type="log4net.Layout.PatternLayout">          <conversionPattern value=http://www.mamicode.com/"%logger" />        </layout>      </parameter>      <!--操作者。这个是自定义的输出字段,使用重新实现的布局器ReflectionLayout-->      <parameter>        <parameterName value=http://www.mamicode.com/":operator" />        <!--设置为Int32时只有bufferSize的 value<="1"才正确输出,没有找出原因。-->        <dbType value=http://www.mamicode.com/"String" />        <size value=http://www.mamicode.com/"200"/>        <layout type="log4net.Layout.PatternLayout">          <conversionPattern value=http://www.mamicode.com/"%username" />        </layout>      </parameter>      <!--IP地址-->      <parameter>        <parameterName value=http://www.mamicode.com/":clientIP" />        <dbType value=http://www.mamicode.com/"String" />        <size value=http://www.mamicode.com/"20" />        <layout type="Enterprise.Framework.Logger.Extensions.ClientIPLayout,Enterprise.Framework.Logger">          <conversionPattern value=http://www.mamicode.com/"%ClientIP"/>        </layout>      </parameter>      <!--机器名-->      <parameter>        <parameterName value=http://www.mamicode.com/":machineName" />        <dbType value=http://www.mamicode.com/"String" />        <size value=http://www.mamicode.com/"100" />        <layout type="log4net.Layout.PatternLayout">          <conversionPattern value=http://www.mamicode.com/"%property{log4net:HostName}" />        </layout>      </parameter>      <!--浏览器-->      <parameter>        <parameterName value=http://www.mamicode.com/":browser" />        <dbType value=http://www.mamicode.com/"String" />        <size value=http://www.mamicode.com/"50" />        <layout type="Enterprise.Framework.Logger.Extensions.BrowserLayout">          <conversionPattern value=http://www.mamicode.com/"%Browser" />        </layout>      </parameter>      <!--日志消息-->      <parameter>        <parameterName value=http://www.mamicode.com/":message" />        <dbType value=http://www.mamicode.com/"String" />        <size value=http://www.mamicode.com/"3000" />        <layout type="log4net.Layout.PatternLayout">          <conversionPattern value=http://www.mamicode.com/"%message" />        </layout>      </parameter>      <!--记录日志的位置-->      <parameter>        <parameterName value=http://www.mamicode.com/":location" />        <dbType value=http://www.mamicode.com/"String" />        <size value=http://www.mamicode.com/"2000" />        <layout type="log4net.Layout.PatternLayout">          <conversionPattern value=http://www.mamicode.com/"%location" />        </layout>      </parameter>      <!--异常信息。ExceptionLayout 为异常输出的默认格式-->      <parameter>        <parameterName value=http://www.mamicode.com/":exception" />        <dbType value=http://www.mamicode.com/"String" />        <size value=http://www.mamicode.com/"4000" />        <layout type="log4net.Layout.ExceptionLayout" />      </parameter>    </appender>    <root>      <!--高 OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL 低-->      <level value=http://www.mamicode.com/"ALL"/>      <appender-ref ref="ADONetAppender" />    </root>    <!--<logger name="StellaLogger">      <level value=http://www.mamicode.com/"ALL"/>      <appender-ref ref="AdoNetAppender" />    </logger>-->  </log4net></configuration>        完成上面两步就可以实现Log4Net针对数据库Oracle的记录插入。天下国家,可均也;爵禄,可辞也;白刃,可蹈也;中庸不可能也

 

[转]如何配置Log4Net使用Oracle数据库记录日志