I坐标

博客园 首页 新随笔 联系 订阅 管理
        ADONetAppend可以将日志记录到指定的数据库中。目前已知的,ADONetAppend支持MSSQLServer,Access,Oracle三种数据库。
        这里说的内容来自Log4net说明文档,并只针对MSSQLServer。文中提供的示例在log4net 1.2 beta8 下调时通过。


        首先,用下面的SQL语句在要记录的数据库中创建表:

 
CREATE TABLE [dbo].[Log] (
        
[Id] [int] IDENTITY (11NOT NULL,
        
[Date] [datetime] NOT NULL,
        
[Thread] [varchar] (255NOT NULL,
        
[Level] [varchar] (50NOT NULL,
        
[Logger] [varchar] (255NOT NULL,
        
[Message] [varchar] (4000NOT NULL,
        
[Exception] [varchar] (2000NULL
 )

        然后用如下的方式配置Appender




基本配置


        上面配置中的第3行配置了日志中的缓存的收集的事件的最大数目。这里设置了100,日志缓存中的数目达到100时,Log就会将缓存的日志写入数据库,并清空缓存。当log4net关闭时,log4net会自动把日志写入数据库,尽管没有达到100。


        如果不配置BufferSize,那么默认值是512。


数据库连接配置


        上面配置中的第4到第6行显示了数据库连接的配置。


        ConnectionType设置了使用什么类型的数据库连接,例子中使用的是SqlConnection,这里,ConnectionType需要的是继承自IDbConnection接口的类所在的Assembly的FullName。


        ConnectionString则是对应的数据连接的连接字符串。


        CommandText是SQL命令字符串,这里使用的是SQL语句,当然,也可以使用存储过程,如果使用存储过程,那么需要增加一项配置如下:

         
<Param name="CommandType" value="StoredProcedure"/>


SQL语句参数配置


        很显然,从第7行一直到49行,都是针对CommandText中的SQL语句的参数的配置。


        需要注意的是,对于每一个参数都定义了参数输出的Layout,我前面的文章介绍过,Layout是log4net日志输出的最后一层,负责将要输出的信息格式化后输出。


        在这个例子里,使用了三种Layout:

  • PatternLayout  (点击看详细解释)
  • RawTimeStampLayout
  • ExceptionLayout

        配置完成之后,就可以直接使用了。


        下面是一个具体的例子的下载:

        例子下载


         值得一提的是,存储数据库的信息不仅仅只有例子中这些信息,在实际应用中,可以自己决定存入那些信息。具体的可使用的信息可以参考 PatternLayout 、 RawTimeStampLayout 、 ExceptionLayout 的解释。

posted on 2005-03-18 15:40  I坐标  阅读(3095)  评论(6编辑  收藏  举报