这里说的内容来自Log4net说明文档,并只针对MSSQLServer。文中提供的示例在log4net 1.2 beta8 下调时通过。
首先,用下面的SQL语句在要记录的数据库中创建表:
CREATE TABLE [dbo].[Log] (
[Id] [int] IDENTITY (1, 1) NOT NULL,
[Date] [datetime] NOT NULL,
[Thread] [varchar] (255) NOT NULL,
[Level] [varchar] (50) NOT NULL,
[Logger] [varchar] (255) NOT NULL,
[Message] [varchar] (4000) NOT NULL,
[Exception] [varchar] (2000) NULL
)
然后用如下的方式配置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 的解释。