1. log4net:保存日志到数据库
  2. 自定义参数
    1. 新建一个类,继承于PatternLayoutConverter

      public class CustomerPatternConverter : PatternLayoutConverter
      {
      protected override void Convert(System.IO.TextWriter writer, log4net.Core.LoggingEvent loggingEvent)
      {
      if (Option != null)
      {
      // Write the value for the specified key
      WriteObject(writer, loggingEvent.Repository, LookupProperty(Option, loggingEvent));
      }
      else
      {
      // Write all the key value pairs
      WriteDictionary(writer, loggingEvent.Repository, loggingEvent.GetProperties());
      }
      } /// <summary>
      /// 通过反射获取传入的日志对象的某个属性的值
      /// </summary>
      /// <param name="property"></param>
      /// <returns></returns>
      private object LookupProperty(string property, log4net.Core.LoggingEvent loggingEvent)
      {
      object propertyValue = string.Empty; PropertyInfo propertyInfo = loggingEvent.MessageObject.GetType().GetProperty(property);
      if (propertyInfo != null)
      propertyValue = propertyInfo.GetValue(loggingEvent.MessageObject, null); return propertyValue;
      }
      }
    2. 创建自定义Layout
      public class MyLayout:log4net.Layout.PatternLayout
      {
      public MyLayout()
      {
      this.AddConverter("Customer",typeof(CustomerPatternConverter));
      }
      }
    3. 创建一个类,用来保存需要保存到数据库中的数据
      public class LogContent
      { public string CustomerCol { get; set; } public string Test { get; set; }
      }
    4. 修改数据库的表结构
      alter table dbo.[log] add customerCol nvarchar(max)
      alter table dbo.[log] add Test nvarchar(max)
    5. 修改配置文档,在文档中添加如下parameter
      <parameter>
      <parameterName value="@customerCol"/>
      <dbtype value="String"/>
      <size value=""/>
      <Layout type="Tospur.Test.Log4net.MyLayout">
      <param name="ConversionPattern" value="%Customer{CustomerCol}"></param>
      </Layout>
      </parameter>
      <parameter>
      <parameterName value="@Test"/>
      <dbtype value="String"/>
      <size value=""/>
      <Layout type="Tospur.Test.Log4net.MyLayout">
      <param name="ConversionPattern" value="%Customer{Test}"></param>
      </Layout>
      </parameter>
    6. 修改配置文件中的sql语
      <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[customerCol],[Test]) 
      VALUES (@log_date, @thread, @log_level, @logger, @message,@customerCol,@Test)" />
    7. 运行代码
      static void Main(string[] args)
      {
      log4net.ILog log = log4net.LogManager.GetLogger("logdb");
      log.Info(new LogContent { CustomerCol="", Test="TEst" });
      Console.ReadKey();
      }
  3. 运行程序,查看结果

http://www.cnblogs.com/MQNH/articles/5603326.html

log4net:保存自定义参数到数据库的更多相关文章

  1. log4net保存到数据库系列三、代码中xml配置log4net

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...

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

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

  3. log4net保存到数据库系列五、新增数据库字段

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...

  4. log4net保存到数据库系列四、完整代码配置log4net

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...

  5. log4net保存到数据库系列二:独立配置文件中配置log4net

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...

  6. log4net保存到数据库系列一:WebConfig中配置log4net

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志 一.WebConfig中配置log4net 二.独立配置文件中配置log4net ...

  7. log4net 写数据到sql数据库

    最近需要把用户的一些行为添加到数据库中,所以想到了用log4net ,如果有别的好的方案,大家可以给我指正. 先看一下配置文件 我这个是控制台文件 app.config <layout type ...

  8. Apache DolphinScheduler 使用文档(7/8):系统参数及自定义参数

    本文章经授权转载,原文链接: https://blog.csdn.net/MiaoSO/article/details/104770720 目录 7. 参数 7.1 系统参数 7.2 时间自定义参数 ...

  9. loadrunner怎么将变量保存到参数中

    用这个lr_save_string 函数 char *b = "很简单";lr_save_string(b,"b"); lr_output_message(&q ...

随机推荐

  1. px和em

    相同点: 都是长度单位 不同点: px是绝对单位,不支持IE的缩放,em是相对单位. px的值是固定的,指定是多少就是多少:em得值不是固定的,并且em会继承父级元素的字体大小 ps: 浏览器的默认字 ...

  2. 日期转换时Safari中返回Invalid Date

    问题: 进行日期转换时,Safari中会返回Invalid Date, 而IE 9, Firefox, Chrome and Opera显示正常,代码如下所示: var d = new Date(&q ...

  3. windows下安装KeystoneJS

    安装参考: http://keystonejs.com/zh/getting-started/ http://jsnoder.com/kjs/quickstart 安装前提条件: 安装 Node.JS ...

  4. MySQL与SqlServer中update操作同一个表问题

    一 SqlServer中操作如下图 这个是没问题的. 二 MySQL中操作如下图 但是在MySQL中想实现这个功能如下图,但是出错了. 原来是MySQL中不支持子查询的 我们可以这样修改一下就可以实现 ...

  5. jsp里边下载文件

    //Tomcat下需要这两个//out.clear();//out=pageContext.pushBody(); //weblogic下加上会报错 response.reset();// 清空输出流 ...

  6. bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能

    xmlrpc .  https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ...

  7. Genymotion--最快的安卓模拟器 测试与模拟APP应用必备

    命令行工具,Eclipse插件,多操作系统 1 易于安装,易于运行 超过10个虚拟设备 您很匆忙?您想测试市场的主要设备?使用我们的虚拟设备! 2 控制功能强大的传感器来测试您的应用程序 自定义你的测 ...

  8. 小议安卓定位伪造-实战足不出户畅玩Pokemon Go

    本文旨在技术探讨故本文不提供工具,正常玩家请勿模仿,游戏中虚拟位置有封号风险 0x00 安卓定位方式归类 要伪造定位首先要摸清定位到底是如何实现的,首先从广义上来区分安卓的定位方式实际上就gps和ne ...

  9. 安装Adobe Flash Player

    安装Adobe Flash Player:         Adobe Flash Player的安装比较容易,只要将对应的文档复制到正确的的位置即可,具体的操作 如下:         (1) 将l ...

  10. Qt开发环境中使用报表控件FastReport遇到的一些问题(二)

    上一节中谈到的那个问题:传递的变量内容如果是纯英文,报表报错.经笔者反复测试,找到了解决办法:代码中第5行替换为以下 params<<"my_var"<<& ...