[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
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
