Log4net記錄日志到Oracle 11g


試了多次,當前的Log4net都不支持記錄日志到Oracle 11g數據庫,於是各種搜索。
1. 下載log4net源代碼進行改寫
    1.1 添加對Oracle.DataAccess的引用
    1.2 添加OracleAppender類  點擊此處下載
    也可以點擊此處下載編譯好的 log4net.dll
2. 新建Web項目,添加對log4net.dll和Oracle.DataAccess.dll的引用,並進行Web.config配置
    2.1 增加section
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

       2.2 增加log4net配置

<log4net>
    <appender name="OracleAppender" type="log4net.Appender.OracleAppender">
      <bufferSize value="1" />
      <connectionType value="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=4.113.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
      <connectionString value="DATA SOURCE=數據庫TNSNAME;USER ID=用戶名;PASSWORD=密碼"/>
      <commandText value="INSERT INTO LOG4NET (LOG_ID, LOG_DATE, LOG_LEVEL, LOG_IDENTITY, LOG_MESSAGE, LOG_EXCEPTION, LOG_LOGGER, LOG_SOURCE) VALUES (LOG4NET_SEQ.nextval, :log_date, :log_level, :log_identity, :log_message, :log_exception, :logger, :source)" />
      <parameter>
        <parameterName value=":log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout">
          <conversionPattern value="%d{yyyy/MM/dd HH:mm:ss}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value=":log_level" />
        <dbType value="String" />
        <size value="10" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%level" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value=":log_identity" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%identity" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value=":log_message" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%m" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value=":log_exception" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%exception" />
        </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=":source" />
        <dbType value="String" />
        <size value="1000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%file:%line" />
        </layout>
      </parameter>
    </appender>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\\LogInfo\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxFileSize" value="10240" />
      <param name="MaxSizeRollBackups" value="100" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyyMMdd&quot;.log&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n日志時間:%d [%t] %n日志級別:%-5p %n日 志 類:%c [%x] %n%m %n" />
      </layout>
    </appender>
    <logger name="loginfo">
      <level value="INFO" />
      <appender-ref ref="InfoAppender" />
    </logger>
    <root>
      <level value="All"/>
      <appender-ref ref="OracleAppender"/>
    </root>
  </log4net>
      2.3 增加dependentAssembly配置
<dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.3.0.0" newVersion="1.3.0.0" />
      </dependentAssembly>
3. 配置代碼記錄LOG。(global.asax文件中的Application_Start方法中添加如下代碼)
log4net.Config.XmlConfigurator.Configure();
            ILog log = LogManager.GetLogger("loginfo");
            log.Info("Application Start");

   4 配置Oracle數據庫

    4.1 建表

create table LOG4NET
(
  log_id        NUMBER not null,
  log_date      TIMESTAMP(6),
  log_level     VARCHAR2(255),
  log_identity  VARCHAR2(255),
  log_message   VARCHAR2(4000),
  log_exception VARCHAR2(4000),
  log_logger    VARCHAR2(255),
  log_source    VARCHAR2(1000)
)

    4.2 建序列

create sequence LOG4NET_SEQ
minvalue 1
maxvalue 999999999999999999999999999
start with 53
increment by 1
nocache;

   5. 最終效果

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM