I坐标

博客园 首页 新随笔 联系 订阅 管理
  39 Posts :: 25 Stories :: 210 Comments :: 5 Trackbacks
        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坐标 阅读(1644) 评论(6)  编辑 收藏 网摘 所属分类: Honeycomb

Feedback

#1楼 2005-03-18 23:01 kc      
不知道微软的Logging and Instrumentation Application Block又如何呢
  回复  引用  查看    

#2楼 2005-10-20 22:16 红儿[未注册用户]
收藏,谢谢
  回复  引用    

#3楼 2005-12-18 14:32 hiairfly[未注册用户]
你有没有配置过写日志到Oracle成功过?能不能把配置文件贴出来参考参考?
  回复  引用    

#4楼 2006-02-09 15:54 程序生活      
@ kc:不知道微软的Logging and Instrumentation Application Block又如何呢

当然很好了!http://terrylee.cnblogs.com/archive/2005/11/02/266999.html">http://terrylee.cnblogs.com/archive/2005/11/02/266999.html

不过用数据库存日志,要用DAAB,否则就用Logging and Instrumentation Application Block提供的接口,创建自己的数据库存储方式

  回复  引用  查看    

#5楼 2006-11-13 20:34 东吴居士      
请问
 ADONetAppend中的连接字符串如果加密一下,log4会读出来吗,怎么解决?
一时找不简单方法,除非改代码。

  回复  引用  查看    

#6楼 2007-09-04 14:24 alina[未注册用户]
很好
  回复  引用    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 121158




相关文章:

相关链接: