程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Log4net入門(SQL篇),log4net入門sql

Log4net入門(SQL篇),log4net入門sql

編輯:關於.NET

Log4net入門(SQL篇),log4net入門sql


  我們在Log4net入門(回滾日志篇)中詳細講述了如何將日志信息輸出到日志文件中,在這一篇中,我們將講述如何將日志文件寫入SQL Server數據庫,以方便我們分析統計日志信息。

  首先,我們在SQL Server中創建一個名為“Management”的數據庫,然後在該數據庫中創建一個名為“Log”的表,該表結構如下所示:

 1 CREATE TABLE [dbo].[Log](
 2     [Id] [int] IDENTITY(1,1) NOT NULL,
 3     [Date] [datetime] NOT NULL,
 4     [Thread] [varchar](255) NOT NULL,
 5     [Level] [varchar](50) NOT NULL,
 6     [Logger] [varchar](255) NOT NULL,
 7     [Message] [varchar](4000) NOT NULL,
 8     [Exception] [varchar](2000) NULL,
 9  CONSTRAINT [PK_Log] PRIMARY KEY CLUSTERED 
10 (
11     [Id] ASC
12 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
13 ) ON [PRIMARY]

  其次,我們在Log4net.config配置文件中添加一個appender節點,然後在root節點中添加一個對新添加的appender節點的引用即可。Log4net.config的配置信息如下所示:

  1 <?xml version="1.0" encoding="utf-8" ?>
  2 <configuration>
  3   <configSections>
  4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  5   </configSections>
  6 
  7   <log4net>
  8     <!-- 將日志輸出到控制台 -->
  9     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
 10       <layout type="log4net.Layout.PatternLayout">
 11         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 12       </layout>
 13     </appender>
 14     
 15     <!-- 將日志寫到文件中 -->
 16     <appender name="FileAppender" type="log4net.Appender.FileAppender">
 17       <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 -->
 18       <file value="Logs/FileAppender.log" />
 19       <!-- 將日志信息追加到已有的日志文件中-->
 20       <appendToFile value="true" />
 21       <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 -->
 22       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 23 
 24       <layout type="log4net.Layout.PatternLayout">
 25         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 26       </layout>
 27     </appender>
 28     
 29     <!-- 將日志以回滾文件的形式寫到文件中 -->
 30     <!-- 按文件大小切分日志文件 -->
 31     <appender name="RollingFileAppenderBySize" type="log4net.Appender.RollingFileAppender">
 32       <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 -->
 33       <file value="Logs/RollingFileAppenderBySize.log" />
 34       <!-- 將日志信息追加到已有的日志文件中-->
 35       <appendToFile value="true" />
 36       <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 -->
 37       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 38       <!-- 指定按文件大小切分日志文件 -->
 39       <rollingStyle value="Size" />
 40       <!-- 指定備份日志文件的最大切分數量,如果超過指定切分文件個數,日志將進行覆寫 -->
 41       <maxSizeRollBackups value="5" />
 42       <!-- 指定每個切分日志文件的大小 -->
 43       <maximumFileSize value="1KB" />
 44       <!-- 指定每個切分文件具有相同的名字 -->
 45       <!-- 日志文件進行切分後,每個日志文件的名字分別為:RollingFileAppenderBySize.log, RollingFileAppenderBySize.log.1, ..., RollingFileAppenderBySize.log.5 -->
 46       <staticLogFileName value="true" />
 47 
 48       <layout type="log4net.Layout.PatternLayout">
 49         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 50       </layout>
 51     </appender>
 52     
 53     <!-- 按日期切分日志文件 -->
 54     <appender name="RollingFileAppenderByDate" type="log4net.Appender.RollingFileAppender">
 55       <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 -->
 56       <file value="Logs/RollingFileAppenderByDate.log" />
 57       <!-- 將日志信息追加到已有的日志文件中-->
 58       <appendToFile value="true" />
 59       <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 -->
 60       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 61       <!-- 指定按日期切分日志文件 -->
 62       <rollingStyle value="Date" />
 63       <!-- 每分鐘切分一個日志文件 -->
 64       <!-- 每天切分一個日志文件的寫法為:"yyyyMMdd" -->
 65       <datePattern value="yyyyMMdd-HHmm" />
 66       <!-- 指定每個切分文件具有相同的名字 -->
 67       <staticLogFileName value="true" />
 68 
 69       <layout type="log4net.Layout.PatternLayout">
 70         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 71       </layout>
 72     </appender>
 73     
 74     <!-- 按日期切分日志文件,並將日期作為日志文件的名字 -->
 75     <appender name="RollingFileAppenderNameByDate" type="log4net.Appender.RollingFileAppender">
 76       <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 -->
 77       <file value="Logs/" />
 78       <!-- 將日志信息追加到已有的日志文件中-->
 79       <appendToFile value="true" />
 80       <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 -->
 81       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 82       <!-- 指定按日期切分日志文件 -->
 83       <rollingStyle value="Date" />
 84       <!-- 日志文件的命名規則 -->
 85       <datePattern value="&quot;Logs_&quot;yyyyMMdd-HHmm&quot;.log&quot;" />
 86       <!-- 當將日期作為日志文件的名字時,必須將staticLogFileName的值設置為false -->
 87       <staticLogFileName value="false" />
 88 
 89       <layout type="log4net.Layout.PatternLayout">
 90         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 91       </layout>
 92     </appender>
 93     
 94     <!-- 既按大小又按日期切分日志文件 -->
 95     <appender name="RollingFileAppenderBySizeAndDate" type="log4net.Appender.RollingFileAppender">
 96       <!-- 日志文件存放位置,可以為絕對路徑也可以為相對路徑 -->
 97       <file value="Logs/RollingFileAppenderBySizeAndDate.log" />
 98       <!-- 將日志信息追加到已有的日志文件中-->
 99       <appendToFile value="true" />
100       <!-- 最小鎖定模式,以允許多個進程可以寫入同一個文件 -->
101       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
102       <!-- 指定既按大小又按日期切分日志文件 -->
103       <rollingStyle value="Composite" />
104       <!-- 指定備份日志文件的最大切分數量,如果超過指定切分文件個數,日志將進行覆寫 -->
105       <maxSizeRollBackups value="5" />
106       <!-- 指定每個切分日志文件的大小 -->
107       <maximumFileSize value="1KB" />
108       <!-- 每分鐘切分一個日志文件 -->
109       <!-- 每天切分一個日志文件的寫法為:"yyyyMMdd" -->
110       <datePattern value="yyyyMMdd-HHmm" />
111       <!-- 指定每個切分文件具有相同的名字 -->
112       <staticLogFileName value="true" />
113 
114       <layout type="log4net.Layout.PatternLayout">
115         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
116       </layout>
117     </appender>
118     
119     <!-- 將日志利用ADO.NET記錄到數據庫中 -->
120     <appender name="AdoNetAppender_SQLServer" type="log4net.Appender.AdoNetAppender">
121       <!-- 緩沖區大小 -->
122       <bufferSize value="1" />
123       <!-- 引用信息 -->
124       <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
125       <!-- 連接到SQL Server的數據庫連接字符串 -->
126       <connectionString value="Data Source=(local); Initial Catalog=Management; User ID=sa; Password=123456;" />
127       <!-- 插入Log表的SQL語句 -->
128       <commandText value="INSERT INTO dbo.Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
129       
130       <parameter>
131         <parameterName value="@log_date" />
132         <dbType value="DateTime" />
133         <layout type="log4net.Layout.RawTimeStampLayout" />
134       </parameter>
135       
136       <parameter>
137         <parameterName value="@thread" />
138         <dbType value="String" />
139         <size value="255" />
140         <layout type="log4net.Layout.PatternLayout">
141           <conversionPattern value="%thread" />
142         </layout>
143       </parameter>
144       
145       <parameter>
146         <parameterName value="@log_level" />
147         <dbType value="String" />
148         <size value="50" />
149         <layout type="log4net.Layout.PatternLayout">
150           <conversionPattern value="%level" />
151         </layout>
152       </parameter>
153       
154       <parameter>
155         <parameterName value="@logger" />
156         <dbType value="String" />
157         <size value="255" />
158         <layout type="log4net.Layout.PatternLayout">
159           <conversionPattern value="%logger" />
160         </layout>
161       </parameter>
162       
163       <parameter>
164         <parameterName value="@message" />
165         <dbType value="String" />
166         <size value="4000" />
167         <layout type="log4net.Layout.PatternLayout">
168           <conversionPattern value="%message" />
169         </layout>
170       </parameter>
171       
172       <parameter>
173         <parameterName value="@exception" />
174         <dbType value="String" />
175         <size value="2000" />
176         <layout type="log4net.Layout.ExceptionLayout" />
177       </parameter>
178     </appender>
179 
180     <root>
181       <!-- 控制級別,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
182       <!-- 比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日志將不會被記錄 -->
183       <!-- 如果沒有定義LEVEL的值,則缺省為DEBUG -->
184       <level value="ALL" />
185       <!-- 將日志輸出到控制台 -->
186       <appender-ref ref="ConsoleAppender" />
187       <!-- 將日志寫到文件中 -->
188       <appender-ref ref="FileAppender" />
189       <!-- 按文件大小切分日志文件 -->
190       <appender-ref ref="RollingFileAppenderBySize" />
191       <!-- 按日期切分日志文件 -->
192       <appender-ref ref="RollingFileAppenderByDate" />
193       <!-- 按日期切分日志文件,並將日期作為日志文件的名字 -->
194       <appender-ref ref="RollingFileAppenderNameByDate" />
195       <!-- 既按大小又按日期切分日志文件 -->
196       <appender-ref ref="RollingFileAppenderBySizeAndDate" />
197       <!-- 將日志利用ADO.NET記錄到數據庫中 -->
198       <appender-ref ref="AdoNetAppender_SQLServer" />
199     </root>
200   </log4net>
201 </configuration>

   至此,關於Log4net的基本用法就講述完畢,上述內容的代碼可以到以下地址下載:Download

 參考文章:

1、Apache log4net Config Examples

2、Apache log4netTM SDK

3、Log4net Tutorial

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved