[C#]log4net写SQLServer数据库日志的配置方法

C# log4net SQL Server 日志配置
本文介绍如何使用log4net将C#应用程序的日志记录到SQL Server数据库中。具体步骤包括创建数据库日志表、配置Web.config文件等。
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

[C#]log4netSQLServer数据库日志的配置方法

编写者

日期

关键词

郑昀@ultrapower

2005-7-19

ASP.NET

Log4net sqlserver

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype>

数据库日志表的准备

在数据库中准备一个这样的表,mail_web_log

生成脚本:

CREATE TABLE [dbo].[mail_web_log] (

[nId] [int] IDENTITY (1, 1) NOT NULL ,

[dtDate] [datetime] NOT NULL ,

[sThread] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[sLevel] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[sLogger] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[sMessage] [varchar] (2000) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[sException] [varchar] (4000) COLLATE Chinese_PRC_CI_AS NULL

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[mail_web_log] WITH NOCHECK ADD

CONSTRAINT [PK_mail_web_log] PRIMARY KEY CLUSTERED

(

[nId]

) ON [PRIMARY]

GO

其中,sLevel字段代表日志的级别;sLogger字段代表日志是由哪一个类或者文件产生的,如

iNotes.Default.Page_Load(c:\mail\mailsource\default.aspx.cs:269)”;sMessage字段代表日志的内容。

Web.configLog4net的配置

注意其中“ADONetAppender”节点的写法,以及各个字段的打印方法。

一般来说,我们对每一个日志字段定义一个“Layout type="log4net.Layout.PatternLayout">”节点以告诉log4net如何输出,在这个节点之下,我们需要配置

conversionPattern value="%t" />

%tlog4net中专门指的是线程名。

下面我们对“%d %t %p %l %m %n”一一讲解:

l %d输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss},输出类似:2005-7-19 17:49:27,刚好适合插入SQLServer

l %t 产生该日志事件的线程名;

l %p 日志的log_level,如DEBUGWARN或者INFO

l %c 输出所属的类目,通常就是所在类的全名,如“iNotes.Default”;

l %m 日志的内容;

l %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。如write2database.main(write2database.java:33)

%n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n

对于web站点的web.config文件,需要如下配置,这部分是参考了cgq214 Blog讲到的写法,同时根据实际效果作了点修正:

配置:

log4net>

appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">

bufferSize value="10" />

connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

connectionString value="server=192.168.1.112;database=domino;uid=sa;pwd=;timeout=300;" />

commandText value="INSERT INTO mail_web_log ([dtDate],[sThread],[sLevel],[sLogger],[sMessage],[sException]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />

parameter>

parameterName value="@log_date" />

dbType value="DateTime" />

layout type="log4net.Layout.RawTimeStampLayout" />

parameter>

parameter>

parameterName value="@thread" />

dbType value="String" />

size value="50" />

layout type="log4net.Layout.PatternLayout">

conversionPattern value="%t" />

layout>

parameter>

parameter>

parameterName value="@log_level" />

dbType value="String" />

size value="200" />

layout type="log4net.Layout.PatternLayout">

conversionPattern value="%p" />

layout>

parameter>

parameter>

parameterName value="@logger" />

dbType value="String" />

size value="200" />

layout type="log4net.Layout.PatternLayout">

conversionPattern value="%logger" />

layout>

parameter>

parameter>

parameterName value="@message" />

dbType value="String" />

size value="2000" />

layout type="log4net.Layout.PatternLayout">

conversionPattern value="%m" />

layout>

parameter>

parameter>

parameterName value="@exception" />

dbType value="String" />

size value="2000" />

layout type="log4net.Layout.ExceptionLayout" />

parameter>

appender>

-- Setup the root category, add the appenders and set the default level -->

root>

level value="WARN"/>

level value="INFO"/>

level value="DEBUG"/>

level value="FINE"/>

root>

-- Specify the level for some specific categories -->

logger name="iNotes">

level value="WARN"/>

level value="INFO"/>

level value="DEBUG"/>

level value="FINE"/>

appender-ref ref="RollingLogFileAppender"/>

appender-ref ref="ADONetAppender" />

logger>

log4net>

编写者

日期

关键词

郑昀@ultrapower

2005-7-19

Wap ASP.NET

Log4net sqlserver




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值