Log4net入門(ASP.NET MVC 5篇)


  在前4篇Log4net入門文章中,我們講述了log4net的一些簡單用法,在這一篇中我們主要講述如何在ASP.NET MVC 5項目中將日志信息寫入SQL Server數據庫中。

一、創建最簡單的ASP.NET MVC 5應用程序

1、打開VS2015,依次點擊【文件】-【新建項目】,創建一個“ASP.NET Web應用程序”,將項目名稱命名為“Log4netMVC”,然后點擊“確定”按鈕。

2、在“選擇模板”選項中,我們選擇“Empty”模板,在“為以下項添加文件夾和核心引用”選項中勾選“MVC”選項,然后點擊“確定”按鈕。

3、右擊項目中的“Controllers”文件夾,依次點擊【添加】-【控制器】,然后選擇“MVC 5控制器 - 空”,然后點擊“添加”按鈕。在彈出的對話框中將控制器名稱命名為“HomeController”,然后點擊“添加”按鈕。

4、雙擊打開新添加的“HomeController.cs”文件,定位到Index()方法,然后右擊該方法名,點擊【添加視圖】選項,彈出“添加視圖”對話框,在該對話框中取消勾選“使用布局頁”選項,其他選項保持不變,然后點擊“添加”按鈕。

5、在Index.cshtml文件中的div元素中添加如下代碼:

 1 @{
 2     Layout = null;
 3 }
 4 
 5 <!DOCTYPE html>
 6 
 7 <html>
 8 <head>
 9     <meta name="viewport" content="width=device-width" />
10     <title>Index</title>
11 </head>
12 <body>
13     <div> 
14         ASP.NET MVC 5中使用log4net!
15     </div>
16 </body>
17 </html>

  至此,最簡單的一個ASP.NET MVC 5項目創建完畢,項目結構如下所示:

二、在ASP.NET MVC 5項目中配置log4net

1、依次點擊【工具】-【NuGet包管理器】-【管理解決方案的NuGet程序包】,然后點擊“瀏覽”標簽頁,在搜索中輸入“log4net”,然后回車,點擊搜索到的“log4net”,然后在右側勾選“Log4netMVC”,版本選擇“最新穩定版2.0.5”,然后點擊“安裝”按鈕,等待安裝完畢即可。

2、在Log4netMVC項目中展開“Properties”節點,然后雙擊打開“AssemblyInfo.cs”文件,在該文件的最后添加以下一行代碼:

 1 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4net.config", Watch = true)] 

3、在Log4netMVC項目的根目錄下添加一個名為“Log4net.config”的配置文件,注意該配置文件的名稱與第2步中的“ConfigFile”的值一致。將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   <system.web>
 8     <compilation debug="true" targetFramework="4.5.2" />
 9     <httpRuntime targetFramework="4.5.2" />
10   </system.web>
11 
12   <log4net>
13     <!-- 將日志利用ADO.NET記錄到數據庫中 -->
14     <appender name="AdoNetAppender_SQLServer" type="log4net.Appender.AdoNetAppender">
15       <!-- 緩沖區大小 -->
16       <bufferSize value="1" />
17       <!-- 引用信息 -->
18       <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
19       <!-- 連接到SQL Server的數據庫連接字符串 -->
20       <connectionString value="Data Source=(local); Initial Catalog=Management; User ID=sa; Password=123456;" />
21       <!-- 插入Log表的SQL語句 -->
22       <commandText value="INSERT INTO dbo.Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
23 
24       <parameter>
25         <parameterName value="@log_date" />
26         <dbType value="DateTime" />
27         <layout type="log4net.Layout.RawTimeStampLayout" />
28       </parameter>
29 
30       <parameter>
31         <parameterName value="@thread" />
32         <dbType value="String" />
33         <size value="255" />
34         <layout type="log4net.Layout.PatternLayout">
35           <conversionPattern value="%thread" />
36         </layout>
37       </parameter>
38 
39       <parameter>
40         <parameterName value="@log_level" />
41         <dbType value="String" />
42         <size value="50" />
43         <layout type="log4net.Layout.PatternLayout">
44           <conversionPattern value="%level" />
45         </layout>
46       </parameter>
47 
48       <parameter>
49         <parameterName value="@logger" />
50         <dbType value="String" />
51         <size value="255" />
52         <layout type="log4net.Layout.PatternLayout">
53           <conversionPattern value="%logger" />
54         </layout>
55       </parameter>
56 
57       <parameter>
58         <parameterName value="@message" />
59         <dbType value="String" />
60         <size value="4000" />
61         <layout type="log4net.Layout.PatternLayout">
62           <conversionPattern value="%message" />
63         </layout>
64       </parameter>
65 
66       <parameter>
67         <parameterName value="@exception" />
68         <dbType value="String" />
69         <size value="2000" />
70         <layout type="log4net.Layout.ExceptionLayout" />
71       </parameter>
72     </appender>
73 
74     <root>
75       <!-- 控制級別,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
76       <!-- 比如定義級別為INFO,則INFO級別向下的級別,比如DEBUG日志將不會被記錄 -->
77       <!-- 如果沒有定義LEVEL的值,則缺省為DEBUG -->
78       <level value="ALL" />
79       <!-- 將日志利用ADO.NET記錄到數據庫中 -->
80       <appender-ref ref="AdoNetAppender_SQLServer" />
81     </root>
82   </log4net>
83 </configuration>

4、雙擊打開“Log4netMVC”根目錄下的Global.asax文件,然后在Application_Start()方法中添加一行代碼,最終代碼如下所示:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 using System.Web.Routing;
 7 
 8 namespace Log4netMVC
 9 {
10     public class MvcApplication : System.Web.HttpApplication
11     {
12         protected void Application_Start()
13         {
14             AreaRegistration.RegisterAllAreas();
15             RouteConfig.RegisterRoutes(RouteTable.Routes);
16 
17             log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("Log4net.config")));
18         }
19     }
20 }

5、雙擊打開“HomeController.cs”文件,編輯代碼如下所示:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.Mvc;
 6 
 7 namespace Log4netMVC.Controllers
 8 {
 9     public class HomeController : Controller
10     {
11         private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
12 
13         // GET: Home
14         public ActionResult Index()
15         {
16             log.Info("ASP.NET MVC Info!");
17             return View();
18         }
19     }
20 }

三、創建數據庫以及日志表

  首先,我們在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]

  至此,所有准備工作以及配置工作全部完成,運行該ASP.NET MVC 5應用程序,即可看到日志成功寫入到SQL Server數據庫。

  源碼下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM