• (二)使用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 效果图如下

  • 相关阅读:
    Python 猜数小程序(练习)
    Mysql 字符串日期互转
    MaxCompute 语句笔记
    数据仓库架构
    Python 比较两个字符串的相似度
    Python print
    Python简单计算器
    HashMap为什么线程不安全(死循环+数据丢失过程分析)
    浅谈ArrayList、Vector和LinkedList
    JAVA对象的浅克隆和深克隆
  • 原文地址:https://www.cnblogs.com/julyweb/p/4075504.html
Copyright © 2020-2023  润新知