最近在学习 log4Net 插件,在博客园找到了好多资料,但是实现起来还是有点麻烦。

现在记录下学习的过程,期间可能加载着借鉴和转载的代码。

1.配置文件的设置:

新建config文件夹下 log4net.config文件,代码如下:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <!--Log4net Begin by Tony  2008.11.20-->
  <log4net>
    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
      <!--示是记录10 条到缓冲区,满10条后再写入SQL server-->
      <bufferSize value="1" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="DATABASE=Log4Net;SERVER=.;UID=sauser;PWD=sqlPassword123_;Connect Timeout=15;" />
      <commandText value="INSERT INTO ErrorLog ([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="100" />
        <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="500" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="3000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%m" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@exception" />
        <dbType value="String" />
        <size value="4000" />
        <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"/>
      <appender-ref ref="ADONetAppender" />
    </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="ADONetAppender"/>
    </logger>
    <logger name="StellaLogger">
      <level value="ALL"/>
      <appender-ref ref="AdoNetAppender" />
    </logger>
  </log4net>
  <!--Log4net End-->
</configuration>

2.数据库Sql语句

USE [Log4Net] GO

SET QUOTED_IDENTIFIER ON GO

SET ANSI_PADDING ON GO

CREATE TABLE [dbo].[ErrorLog](

[nId] [bigint] IDENTITY(1,1) NOT NULL,

[dtDate] [datetime] NOT NULL,

[sThread] [varchar](100) NOT NULL,

[sLevel] [varchar](200) NOT NULL,

[sLogger] [varchar](500) NOT NULL,

[sMessage] [varchar](3000) NOT NULL,

[sException] [varchar](4000) NULL ) ON [PRIMARY]

GO

SET ANSI_PADDING OFF GO

3.AssemblyInfo.cs 文件

添加

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Config\\log4net.config", Watch = false)]

4.FilterConfig.cs

public static void RegisterGlobalFilters(GlobalFilterCollection filters)

{

filters.Add(new HandleErrorAttribute());

//注册错误过滤器

filters.Add(new MyDealExceptionFileAttribute());

}

5.新建MyLogHelper.cs 文件

public class MyLogHelper

{

public static void WriteLog(string txt)

{

ILog log = LogManager.GetLogger("log4netlogger");

log.Error(txt);

}

}

6.新建MyDealExceptionFileAttribute .cs

public class MyDealExceptionFileAttribute : HandleErrorAttribute

{

public override void OnException(ExceptionContext filterContext)

{

base.OnException(filterContext);             //处理错误消息,将其跳转到一个页面

MyLogHelper.WriteLog(filterContext.Exception.ToString());             //页面跳转到错误页面

filterContext.HttpContext.Response.Redirect("/Error.html");

}

}

6.HomeController.cs 控制器下代码

public ActionResult Index()
        {
            try
            {
                int a = 0;
                int b2 = 1;
                int c = b2 / a;
            }
            catch (Exception ex)
            {
                log4net.ILog myLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                 myLogger.Error("错误的测试", ex);  
            }
            return View();
        }

7.Global.asax  文件配置

log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("config\\log4net.config"));

借鉴URL:

http://kb.cnblogs.com/page/76919/

http://www.cnblogs.com/huanghai223/archive/2012/02/21/2361529.html

http://myx.cnblogs.com/iaxes/articles/Log4net.html

ASP.NET MVC5 之 Log4Net 的学习和使用的更多相关文章

  1. ASP.NET MVC5学习笔记01

    由于之前在项目中也使用MVC进行开发,但是具体是那个版本就不是很清楚了,但是我觉得大体的思想是相同的,只是版本高的在版本低的基础上增加了一些更加方便操作的东西.下面是我学习ASP.NET MVC5高级 ...

  2. ASP.NET MVC5 与EF6学习系列

    最近学习使用MVC5和EF6,博客园搜索了一番,写下这篇文章记录,以便学习使用. 一.ASP.NET MVC5 网站开发 @洞庭夕照写的博客系列 ASP.NET MVC5 网站开发实践 - 概述 AS ...

  3. 译:在ASP.NET MVC5中如何使用Apache log4net 类库来记录日志

    译文出处:http://www.codeproject.com/Articles/823247/How-to-use-Apache-log-net-library-with-ASP-NET-MVC 在 ...

  4. 学习asp.net mvc5心得

    前几天时间大体学习了一下asp.net mvc5的应用,感觉最主要的就是要区分这以模式设计,其他的都是在asp.net下的基础操作 1参数的传递注意 2路由的设置规则 3model的应用

  5. Asp.Net MVC5入门学习系列③

    原文:Asp.Net MVC5入门学习系列③ 添加一个视图(View) 接着上篇的入门系列,上面解说添加一个简单Controller(控制器),这里我们简单的在来添加一个View(视图)来展示我们Co ...

  6. Asp.Net MVC5入门学习系列②

    原文:Asp.Net MVC5入门学习系列② 添加一个Controller(控制器) 因为我们用的是Asp.Net MVC,MVC最终还是一套框架,所以我们还是需要遵循它才能玩下去,或者说是更好的利用 ...

  7. Asp.Net MVC5入门学习系列①

    原文:Asp.Net MVC5入门学习系列① 现在直接开始MVC5的学习系列,学习资源来自Micrsoft. 开始使用Asp.Net MVC 5 打开Visual Studio 2013,然后新建一个 ...

  8. Asp.Net MVC5入门学习系列⑦

    原文:Asp.Net MVC5入门学习系列⑦ 接着上篇结尾所说,如果开发中刚才遇到Model需要添加或者减少字段/属性的话,但是刚好你也利用EF的Code frist通过Model生存的数据库,这时改 ...

  9. Asp.Net MVC5入门学习系列⑤

    原文:Asp.Net MVC5入门学习系列⑤ 检查VS生产的编辑方法和编辑窗体 前面我们一步使用强类型,然后创建Controller(控制器)的时候,VS默认已经给我们把CURD都简单的实现了.这篇的 ...

随机推荐

  1. JSP页面中的动作标识

    JSP页面中的动作标识 制作人:全心全意 包含文件标识<jsp:include> 此标识和include指令类似,用于向当前页面中包含其它的文件,且包含的文件可以是动态文件,也可以是静态文 ...

  2. python3中post请求里带list报错

    这个post请求的数据太长,一般data=,json=就够了. 但是今天这个一直报错,用json吧,报缺少参数,用data吧,报多余[. 后来改成data=,并把数据中的[] 用引号括起来," ...

  3. intel compiler的表现

    好久没弄这个东西,今天突然想试下,代码没写完,以后补. #include <stdio.h> #include <stdlib.h> #include <time.h&g ...

  4. [bzoj4247][挂饰] (动规+排序)

    Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同——其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直 ...

  5. asp.net mvc 4.0 新特性之移动特性

    asp.net mvc 4.0 新特性之移动特性 为不同的客户端提供不同的视图 手动重写 UserAgent,从而强制使用对应的视图 示例1.演示如何为不同的客户端提供不同的视图Global.asax ...

  6. mongodb local数据库的空间初始化好大啊!

    新建立了一个replicat set,登录到primary里,show dbs一看吓一跳 local数据库竟然占用了80多G的空间 [root@wxlab31 bin]# ./mongo --host ...

  7. Minimum Sum LCM(uva 10791)

    题意(就是因为读错题意而wa了一次):给一个数字n,范围在[1,2^23-1],这个n是一系列数字的最小公倍数,这一系列数字的个数至少为2 例如12,是1和12的最小公倍数,是3和4的最小公倍数,是1 ...

  8. [bzoj 2705][SDOI2012]Longge的问题(数学)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2705 分析: 设k为n的因数 设f[k]为gcd(x,n)==k的x的个数,容易知道a ...

  9. - > 听学姐讲那过去的故事——打代码的小女孩

    童话故事 不知道大家有没有看过  天冷极了,下着雪,又快黑了.这是一年的最后一天——大年夜.在这又冷又黑的晚上,一个乖巧的小女孩在机房里调试程序.她从家里出来的时候还穿着一件外套,但是有什么用呢?那是 ...

  10. Ubuntu 16.04安装GIMP替代PS

    GIMP虽然不能完全替代PS,但是也能弥补一下. 系统默认源中已经包含了GIMP,不需要使用PPA这些. 安装: sudo apt-get install gimp 启动: 通过Dash搜索GIMP即 ...