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

 

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. [solr] - SolrJ增删查

    使用SolrJ进行对Solr的增.删.查功能. 参考引用: http://wiki.apache.org/solr/Solrj Eclipse中新建一个项目:TestSolr 其中SorlJ的Lib包 ...

  2. Python Queue队列

    queue is especially useful in threaded programming when information must be exchanged safely between ...

  3. LeetCode "Russian Doll Envelopes"

    An intuitive DP - should be 'medium'. class Solution { public: int maxEnvelopes(vector<pair<in ...

  4. 报错:Unable to load configuration. - action - file:/E:/apache-tomcat-8.0.37/webapps/20161102-struts2-3/WEB-INF/classes/struts.xml:11:73

    第一种报错: 严重: Exception starting filter struts2Unable to load configuration. - action - file:/E:/apache ...

  5. ADF_Desktop Integration系列2_ADF桌面集成入门之开发简单ADF Desktop Excel

    2013-05-01 Created By BaoXinjian

  6. Windows,caffe 仅cpu

    http://caffe.berkeleyvision.org/installation.html 按着官网的步骤:https://github.com/BVLC/caffe/tree/windows ...

  7. vim 学习日志(4):多窗口使用技巧

    原文地址: http://blog.csdn.net/devil_2009/article/details/7006113 vim多窗口使用技巧 1.打开多个窗口打开多个窗口的命令以下几个:横向切割窗 ...

  8. java 线程数据同步

    java 线程数据同步 由买票实例 //java线程实例 //线程数据同步 //卖票问题 //避免重复卖票 //线程 class xc1 implements Runnable{ //定义为静态,可以 ...

  9. l类型转换错误ClassCastException

    出现问题原因story中参数写错:

  10. Marathon

    早上,挣扎到十点才起,刚好去吃过饭,来教研室,等待着中午的马拉松. 中午一直是很激动,有些紧张.一直到整个马拉松跑完,我达到了我唯一的目标,保持均匀的呼吸节奏.但我能明显感觉到,我并没有拼尽全力.我不 ...