假设数据库中有如下自定义字段:

 

1、根据自定义字段定义日志信息对象

    public class MessageLog
    {
 
        /// <summary>
        /// 短信发送是否成功
        /// </summary>
        public int Success { get; set; }
 
        /// <summary>
        /// 发送号码(可以多个,逗号分隔)
        /// </summary>
        public string Mobiles { get; set; }
 
        public string Message { get; set; }
 
        /// <summary>
        /// 发送内容
        /// </summary>
        public string Content { get; set; }
 
        public override string ToString()
        {
            return this.Message;
        }
    }
 
2、根据自定义字段定义PatternConverter,以Content自定义字段为例,其它两个字段同
    internal sealed class ContentPatternConverter : PatternLayoutConverter
    {
        protected override void Convert(System.IO.TextWriter writer, LoggingEvent loggingEvent)
        {
            var messageLog = loggingEvent.MessageObject as MessageLog;
            if (messageLog != null)
            {
                writer.Write(messageLog.Content);
            }
        }
    }
 
3、自定义PatternLayout
    public class MessageLayout : PatternLayout
    {
        public MessageLayout()
        {
            this.AddConverter("Success", typeof(SuccessPatternConverter));
            this.AddConverter("Mobiles", typeof(MobilesPatternConverter));
            this.AddConverter("Content", typeof(ContentPatternConverter));
        }
    }
 
4、日志配置文件中添加数据库记录器并引用
<appender name="MySqlAdoNetAppender" type="log4net.Appender.AdoNetAppender">
    <bufferSize value="1" />
    <param name="ConnectionType" value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />
    <param name="ConnectionString" value="Data Source=192.168.2.239;port=3306;Initial Catalog=log;user id=hhuser;password=123456;" />
    <commandText value="INSERT INTO log4message(datetime,thread,level,logger,message,Exception,Success,Mobiles,Content) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception, @Success, @Mobiles, @Content)" />
    <parameter>
      <parameterName value="@log_date" />
      <dbType value="DateTime" />
      <layout type="log4net.Layout.RawTimeStampLayout" />
    </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>
    <parameter>
      <parameterName value="@Success" />
      <dbType value="Int32" />
      <layout type="BKMS.Service.Log.MessageLayout, BKMS.Service">
        <conversionPattern value="%Success" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Mobiles" />
      <dbType value="String" />
      <size value="4000" />
      <layout type="BKMS.Service.Log.MessageLayout, BKMS.Service">
        <conversionPattern value="%Mobiles" />
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@Content" />
      <dbType value="String" />
      <layout type="BKMS.Service.Log.MessageLayout, BKMS.Service">
        <conversionPattern value="%Content" />
      </layout>
    </parameter>
    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="INFO" />
      <levelMax value="INFO" />
    </filter>
  </appender>

log4net记录日志到数据库自定义字段的更多相关文章

  1. 将WebService部署到 SharePoint 2010 gac 缓存中,并用Log4Net记录日志到数据库

    最近做了一个sharePoint项目,需要实现的功能是,第三方网站访问我们sharePoint中的数据,通过Webservice方式实现文件的上传和下载. 于是代码工作完成了之后,本地调试没什么问题, ...

  2. 使用log4net记录日志到数据库(含有自定义属性)

    记录日志是管理系统中对用户行为的一种监控与审核,asp.net中记录日志的方式有很多种,这里我只介绍一下最近用到的log4net,关于他的具体介绍网上有很多,我讲一下他的用法. 第一步:在配置文件中的 ...

  3. Log4Net使用指南之用log4net记录日志到数据库(含有自定义属性)------附Demo例子源代码

    Log4NET简介 log4net库是Apache log4j框架在Microsoft .NET平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台.文件.数据库等)的工具. 前提 最近做项目 ...

  4. 使用log4net记录日志到数据库(含自定义属性)

    日志输出自定义属性! 特来总结一下: 一.配置文件 使用log4写入数据库就不多说了,网上方法很多,自定义字段如下 <commandText value="INSERT INTO db ...

  5. log4j配置输出到数据库+自定义字段

    Log4j.properties配置 log4j.rootLogger = info,stdout,D,E,A3 log4j.appender.Threshold=info ### 控制台输出### ...

  6. asp.net mvc中用 log4net记录日志到数据库中

    1.log4net官网配置相关,创建数据库 http://logging.apache.org/log4net/release/config-examples.html CREATE TABLE [d ...

  7. log4net自定义字段写入SqlServer数据库 ASP.net

    首先申明,本示例经过本作者亲自试验通过,可以运行 第一步 编写log4net配置文件 此处为Log.xml,该文件放在与Web.config平级的位置 <?xml version="1 ...

  8. Log4net 自定义字段到数据库(二)

    这种方法比第一种方法麻烦些 Log4Net.config <?xml version="1.0" encoding="utf-8" ?> <c ...

  9. Log4net 自定义字段到数据库

    今天要求做个log4net自定义字段到数据库,在网上找了好多例子,都运行不成功.最后找了个国外的,很简单的就解决了. log4net它已经定义的字段有 <commandText value=&q ...

随机推荐

  1. jquery checkbox反复调用attr('checked', true/false)只有第一次生效

    /** * 全选 */ function checkAll() { $("input[name=ids]").attr("checked", true); } ...

  2. 监听器和普通类获取springContext和context,从而获取springbean和application范围的对象

    1.定义一个监听器[MyContextListener],此类里最主要获取springContext和context package my.request; import javax.servlet. ...

  3. Centos 安装vsftpd 服务器

    一:检查有没有安装vsftpd 二:安装vsftpd 三:安装之后重启 四:修改vsftpd配置文件 配置文件路径在/etc/vsftpd目录下 默认是注释掉的,把#号去掉 然后重启vsftpd 五: ...

  4. Android Programing 学习笔记(一)

    最近学习android 开发,拜读android programing,一步一步学习.囫囵吞枣,现已看到第十八章.今天把最近的学习过程中学到的一些内容进行一下总结. 一:Fragment 和 Acti ...

  5. HOG matlab练习

    matlab练习程序(HOG方向梯度直方图) HOG(Histogram of Oriented Gradient)方向梯度直方图,主要用来提取图像特征,最常用的是结合svm进行行人检测. 算法流程图 ...

  6. 用JavaScript动态加载CSS和JS文件

    本文转载自:http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/11/14/2248451.html 今天项目中需要用到动态加载 CSS 文件 ...

  7. java readLine()

    原文 虽然写IO方面的程序不多,但BufferedReader/BufferedInputStream倒是用过好几次的,原因是: 它有一个很特别的方法:readLine(),使用起来特别方便,每次读回 ...

  8. HDFS--(HA)初始化与启动

    1.启动zk 2.启动journalnode:         hadoop-daemons.sh start journalnode 3.格式化zkfc--让在zookeeper中生成ha节点    ...

  9. JSP、HTML标签

    <%@ ...%> 表示是指令,主要用来提供整个JSP 网页相关的信息,并且用来设定JSP网页的相关属性,例如:网页的编码方式.语法.信息等.起始符号为: <%@ 终止符号为: %& ...

  10. U盘分区之后如何恢复

    操作步骤: 1.插入U盘. 2.按windows键,右键点击“运行”,再左键点击以管理员身份运行. 3.输入diskpart,按enter. 4.输入list disk,按enter. 5.之后会看到 ...