log4net配置写入SQL Server数据库(sqlserver-sqlclient) 并传入自定义业务对象

来源:互联网 发布:普通网民 阿里云能干嘛 编辑:程序博客网 时间:2024/05/29 17:59

http://www.cnblogs.com/Arlen/archive/2008/11/22/1338908.html
       本贴在原来帖子的基础上有些修改,经过本人的实际运行调试运行,本贴中的代码都可以直接复制使用。
       在项目中需要记录业务日志(即用户进行了什么操作,操作什么内容,什么时候,操作内容以结构化的方式存储,以方便以后数据挖掘)。
      系统采用了log4net来将业务日志记录到数据库中,反正在log4net中加个Appender就可以。由于业务需要记录的并不是简单的系统时间%date,级别%level,信息%message等字段,而是自定义的业务字段。发现记录日志的info,error,debug等方法可以传入object参数:log.info(object message)。于是到网上查找它是不是象我们预想的这样,传一个自定义的业务日志对象给info方法,它自动帮我得到该业务对象的字段的值。找了半天,答案是:不行。
仔细想了下,难道别人都不这样用吗?别人是怎么传入自定义业务对象?
虽然看起来已经没有什么必要,但还是自己做出了解决方案。
下面把配置方式及传入自定义业务对象的解决方案附上。
一、log4net针对sqlserver的配置方式:
(注:如果配置写入数据库,需要将System.Data.dll拷到bin目录下。)
再写入数据库之前,首先看一下,将要写入的数据库表的结构。

表名是test_log
再看看我们自定义的消息类。

   public class LogContent
    {
       public string Reason{get;set;}
       public string Name { get; set; }
    }

万事具备,只欠东风了,下面就是配置文件了。

到了这里,程序还不能运行,对了,还少一个东西,那就是自定义的MyLayout呀,下面给出代码。

代码的调用

运行结果。

 

来自:http://blog.csdn.net/niuyongjie/archive/2010/07/30/5777625.aspx

 

 

 

 

 

 

 

 

 

原创粉丝点击