C#實現(xiàn)SQLServer數(shù)據(jù)庫日志的配置方法

字號:

在數(shù)據(jù)庫中準備一個這樣的表,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字段代表日志是由哪一個類或者文件產(chǎn)生的,如
    “iNotes.Default.Page_Load(c:\mail\mailsource\default.aspx.cs:269)”;sMessage字段代表日志的內(nèi)容。
    Web.config中Log.Net的配置
    注意其中“AD.NetAppender”節(jié)點的寫法,以及各個字段的打印方法。
    一般來說,我們對每一個日志字段定義一個“”節(jié)點以告訴log.Net如何輸出,在這個節(jié)點之下,我們需要配置
    
    %t在log.Net中專門指的是線程名。
    下面我們對“%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 產(chǎn)生該日志事件的線程名;
    l %p 日志的log_level,如DEBUG、WARN或者INFO;
    l %c 輸出所屬的類目,通常就是所在類的全名,如“iNotes.Default”;
    l %m 日志的內(nèi)容;
    l %l 輸出日志事件的發(fā)生位置,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。如write2database.main(write2database.Java:33);
    %n 輸出一個回車換行符,Windows平臺為“\r\n”,Unix平臺為“\n”