一、首先在使用log4net记录日志的时候,我们要引用log4net.dll文件

   二、在web.config中添加一下配置代码

 <configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4Net" />
</configSections>

接着添加一下配置代码:

 <!--站点日志配置部分-->
<log4net>
<!-- Define some output appenders -->
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
<!-- Set root logger level to ERROR and its appenders -->
<root>
<level value="ERROR"/>
<appender-ref ref="ErrorAppender"/>
</root>
<!-- Print only messages of level DEBUG or above in the packages -->
<logger name="ErrorLogger">
<level value="ERROR"/>
</logger>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender,log4net">
<!--文件保存的地址-->
<param name="File" value="App_Data/" />
<!--是否追加-->
<param name="AppendToFile" value="true"/>
<!--最大日志文件数量-->
<param name="MaxSizeRollBackups" value=""/>
<!--文件最大值-->
<param name="MaximumFileSize" value="2MB"/>
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Composite"/>
<param name="DatePattern" value="&quot;Logs_Error&quot;yyyyMMdd&quot;.txt&quot;"/>
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false"/>
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<!--%logger:错误的对象-->
<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline%newline"/>
<param name="Header" value=" -------------------Error-header------------------- "/>
<param name="Footer" value=" -------------------Error-footer------------------- "/>
</layout>
</appender>
</log4net>

   三、创建一个记录异常的过滤器Log4ExceptionAttribute继承HandleErrorAttribute

public static Queue<Exception> Exceptions = new Queue<Exception>();
/// <summary>
/// 重写OnException方法来捕获异常数据
/// </summary>
/// <param name="filterContext"></param>
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
//捕获当前异常数据
var ex = filterContext.Exception;
//将异常数据入队
Exceptions.Enqueue(ex);
//跳转到错误页面
filterContext.HttpContext.Response.Redirect("http://www.baidu.com");
}

   四、在global.asax中添加一下代码

  log4net.Config.XmlConfigurator.Configure();
//开启一个线程,扫描异常信息队列.
var filePath = Server.MapPath("/Log/");
ThreadPool.QueueUserWorkItem((a) =>
{
while (true)
{
//判断队列中是否有数据
if (Log4ExceptionAttribute.Exceptions.Any())
{
//出队一条异常信息
var ex = Log4ExceptionAttribute.Exceptions.Dequeue();
//若异常信息不为空
if (ex == null) continue;
//将异常信息写入到日志文件中
var logger = LogManager.GetLogger("ErrorLogger");
logger.Error(ex.ToString());
}
else
{
//若异常信息队列为空,则线程休息三秒
Thread.Sleep();
}
}
}, filePath);

    最后找到App_Start下的FilterConfig过滤器把刚创建的异常过滤器添加进去

  public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute());
filters.Add(new Log4ExceptionAttribute());
}

.Net MVC4 log4net的配置的更多相关文章

  1. LOG4NET日志配置及使用

    Log4net的安装 Install-Package log4net 1.先弄个日志记录的类 /// <summary> /// 使用LOG4NET记录日志的功能,在WEB.CONFIG里 ...

  2. log4net的配置与使用

    log4net解决的问题是在.Net下提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括MS SQ ...

  3. 将Log4net的配置配置到的独立文件中

    本文转载:http://blog.csdn.net/wanzhuan2010/article/details/7587780 另外一篇博客:http://grim1980.blog.sohu.com/ ...

  4. Log4Net 日志配置[附带源码]

    前述 园子里有许多人对log4net这款开源的日志记录控件有很多介绍.在这里个人再做一次总结,希望对以后有所帮助,需要的时候可以直接使用,减少查阅资料的时间.利用log4net可以方便地将日志信息记录 ...

  5. Log4Net详细配置

    关于Log4Net配置主要分几步 第一步:下载log4net.dll(log4net官网:http://logging.apache.org/log4net/download_log4net.cgi) ...

  6. 日志管理-将Log4net的配置配置到的独立文件中

    转自:http://www.cnblogs.com/zfanlong1314/p/3662679.html使用log4net已经很久了.但从来没有详情了解log4的参数,及具体使用方法.看了周公的博客 ...

  7. Log4net快速配置使用指南。(快速搭建log4net日志平台手册)

    每做一个新项目,都会用到log4net,但总是忘记如何快速配置.有时在网上搜半天也找不到好的模板,大都在介绍参数的使用,在此做下总结,争取下次用时仅10分钟就可搭建好log4net. 直接上介绍的步骤 ...

  8. C# log4net 的配置

    项目的日志组件是必备可少的,任何项目中都需要.这样既方便前期的开发测试也方便项目后期的项目维护.C#项目的一个不错的日志组件是log4net,下面我就把桌面应用程序.控制台程序.网站中log4net的 ...

  9. ASP.NET MVC4通过UrlRewriter配置伪静态,支持html后缀

    参考文章: ASP.NET MVC4通过UrlRewriter配置伪静态 http://blog.csdn.net/just_shunjian/article/details/51132866 .NE ...

随机推荐

  1. MyBatis知识点总结(一)

    前言:本篇主要记录在MyBatis学习过程中的主要知识点. 1.mybatis环境的搭建,通过maven可以快速的进行环境的搭建. <!--文件版本--> <properties&g ...

  2. Scrapy 框架 手动发送请求 POST 请求的发送

    手动发送请求 import scrapy from choutiSpider.items import ChoutispiderItem class ChoutiSpider(scrapy.Spide ...

  3. Flask框架简介,常用扩展包及两大核心

    Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核,其他几乎所有的功能都 ...

  4. Linux常用命令全称

    Linux常用命令全称 pwd:print work directory   打印当前目录 显示出当前工作目录的绝对路径 ps: process status(进程状态,任务管理器)    常用参数: ...

  5. IOException: Sharing violation on path *****

    Unity代码中删除文件或者文件夹时,可能会报这个错.翻译成白话文就是:你在其它地方打开了这个文件/文件夹   把打开的地方关了就是了.

  6. Docker资源限制与Cgroups

    一.Linux control groups 简介     Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如 ...

  7. hibernate 解决诡异的mysql存入中文乱码

    使用hibernate查询mysql,通过bean的get方法拿到字符串再写入mysql中的字段会中文乱码,需要String string = xxx.get(),把get方法拿到的值传入到新的str ...

  8. 【C#复习总结】垃圾回收机制(GC)2

    理解C#垃圾回收机制我们首先说一下CLR(公共语言运行时,Common Language Runtime)它和Java虚拟机一样是一个运行时环境,核心功能包括:内存管理.程序集加载.安全性.异步处理和 ...

  9. 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)

    朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上) [下载本文PDF进行阅读] 设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践.在经过多年的软件开发实践之后,回过头来去看23种设 ...

  10. Leetcode -- 394. Decode String

    Given an encoded string, return it's decoded string. The encoding rule is: k[encoded_string], where ...