(二)使用log4net寫入數據庫自定義日誌

一、配置項目環境

1.1 本文只顯示須要修改配置的操做,初次引入log4net環境的請參考上文html

1.2 安裝mysql-connector-net.msi環境,下載地址。並手動生成數據庫日誌信息表。mysql

二、配置log4net.config

2.1 修改log4net.configweb

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <!-- Mysql日誌類 -->
    <logger name="logdb">
      <level value="ALL" />
      <appender-ref ref="AdoNetAppender_Mysql" />
    </logger>
    
    <!-- Mysql日誌附加介質 -->
    <appender name="AdoNetAppender_Mysql" type="log4net.Appender.AdoNetAppender">
      <!-- 日誌信息緩衝區大小,測試時爲0,實際部署可適當改成100 -->
      <bufferSize value="0" />
      <!-- mysql-connector-net版本爲6.8.3以上,不需更改數據源 -->
      <ConnectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
      <!-- 數據庫鏈接字符串 -->
      <ConnectionString value="server=localhost;user id=root;password=root;persist security info=True;character set=utf8;database=test;pooling=true;"/>
      <!-- 數據庫日誌插入命令 -->
      <commandText value="INSERT INTO loginfo (DateTime,Message,UserId) VALUES (@log_date, @message, @user_id)" />
      <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message" />
        </layout>
      </parameter>
      <!-- 格式帶property爲自定義信息 -->
      <parameter>
        <parameterName value="@user_id" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{UserId}" />
        </layout>
      </parameter>
    </appender>
  </log4net>
</configuration>

三、代碼使用示例

3.1 修改工具類LogHelpersql

namespace July.Demo.Win
{
    public class LogHelper
    {
        static readonly log4net.ILog logdb = log4net.LogManager.GetLogger("logdb");

        public static void WriteLog(string info)
        {
            if (logdb.IsInfoEnabled)
            {
          //使用線程相關屬性設定自定義信息
                log4net.ThreadContext.Properties["UserId"] = "U-1001";
                logdb.Info(info);
            }
        }
    }
}

四、運行效果

4.1 效果圖以下數據庫

相關文章
相關標籤/搜索