使用log4net 日志輸出到數據庫MySQL


使用Log4Net的輸出日志到MySQL

使用步驟如下:

1. 添加引用Log4Net.dll, mysql.data.dll到工程中

note: mysql.data.dll 版本要高,最好到mysql官網下載最新的版本(6.2.7)。本人的教訓:用了低版本的mysql.data.dll, 以至於沒辦法插入數據到MySQL數據庫,插入表內容為NULL, 提示System.data.dll加載錯誤。


2. 添加app.config到工程中

app.config 配置如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
  <appender name="AdoNetAppender_MySql" type="log4net.Appender.AdoNetAppender">

    <bufferSize value="1"/>
    <param name="ConnectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data"/>
    
    <param name="ConnectionString" value="server=localhost;database=test;Uid=root;Pwd=root;"/>
    <commandText value="INSERT INTO log4net(log_datetime,log_thread,log_level,log_logger,log_message,Exception) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/>
    <parameter>
      <parameterName value="@log_date"/>
      <dbType value="DateTime"/>
      <layout type="log4net.Layout.RawTimeStampLayout"/>
      <!--<layout type="log4net.Layout.PatternLayout" value="%date{yyyy'-'MM'-'dd HH':'mm':'ss}" />-->
    </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>
  <root>
    <level value="ALL"/>
    <appender-ref ref="AdoNetAppender_MySql"/>
  </root>
  <logger name="*">
    <level value="ALL" />
    <appender-ref ref="AdoNetAppender_MySql" />
  </logger>
</log4net>
</configuration>

3. 在AssemblyInfo.cs中添加以下一條語句:

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

4. 在程序中調用

log4net.ILog log = log4net.LogManager.GetLogger("MyLogger");

log.Info("hello world!");

5. 可以到mysql數據庫中查看是否成功插入一條Message: hello world!

Re: 以上是個人的總結,提供參考。


免責聲明!

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



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