zoukankan      html  css  js  c++  java
  • (二)使用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 效果图如下

  • 相关阅读:
    Finalize,Dispose,SuppressFinalize
    防火防盗防微软,Firefox发布插件自动检测服务
    Nginx的Rewrite设置及示例
    Linux游戏开发包 ClanLib 2.1.0 发布
    HTTP协议详解(真的很经典)
    Linux on POWER:发行版迁移和二进制兼容性考虑事项
    映射网络驱动器VBS脚本
    [笔记] 使用 opcache 优化生产环境PHP
    2020最新版MySQL数据库面试题(三)
    请注意,面试中有这7个行为肯定会被拒绝!
  • 原文地址:https://www.cnblogs.com/julyweb/p/4075504.html
Copyright © 2011-2022 走看看