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

系统 1763 0

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

编写者

日期

关键词

郑昀 @ultrapower

2005-7-19

ASP.NET

Log4net sqlserver

 

数据库日志表的准备

在数据库中准备一个这样的表, 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.config Log4net 的配置

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

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

< conversionPattern value ="%t" />

%t log4net 中专门指的是线程名

下面我们对“ %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 ,如 DEBUG WARN 或者 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

 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=429290


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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论