• 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数据库。

      源码下载

    https://www.cnblogs.com/yonghuacui/p/6179987.html

  • 相关阅读:
    hdoj 1237 模拟
    Codeforces 242E:XOR on Segment(位上的线段树)***
    Tsinsen A1333: 矩阵乘法(整体二分)
    HDU 2830:Matrix Swapping II(思维)
    BZOJ 3110:[Zjoi2013]K大数查询(整体二分)
    POJ 2104:K-th Number(整体二分)
    玲珑OJ 1083:XJT Love Digits(离线处理+哈希)
    玲珑OJ 1082:XJT Loves Boggle(爆搜)
    模板:树状数组(带区间修改和区间更新)
    HDU 5618:Jam's problem again(CDQ分治+树状数组处理三维偏序)
  • 原文地址:https://www.cnblogs.com/sjqq/p/9106018.html
Copyright © 2020-2023  润新知