首页 > 代码库 > (二)使用log4net写入数据库自定义日志

(二)使用log4net写入数据库自定义日志

1、配置项目环境

1.1 本文只显示需要修改配置的操作,初次引入log4net环境的请参考上文。

1.2 安装mysql-connector-net.msi环境,下载地址。并手动生成数据库日志信息表。

2、配置log4net.config

2.1 修改log4net.config

<?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、代码使用示例

3.1 修改工具类LogHelper

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、运行效果

4.1 效果图如下

(二)使用log4net写入数据库自定义日志