一、首先在使用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. node基础—global对象(全局对象)

    global对象的__filename属性和__dirname属性 __filename属性:返回当前执行的文件的文件路径,该路径是经过解析后的绝对路径,在模块中,该路径是模块文件的路径,此属性并非全 ...

  2. 8.03-json_to_csv

    import json import csv # 需求 json 中的数据 转换 成 csv文件 # 1.分别 读 , 创建文件 json_fp = open('02new.json', 'r') c ...

  3. 【转】AJAX请求和普通HTTP请求区别

    两者本质区别: AJAX通xmlHttpRequest象请求服务器服务器接受请求返数据实现刷新交互 普通http请求通httpRequest象请求服务器接受请求返数据需要页面刷新 AJAX请求 普通请 ...

  4. 第2章 Java并发机制的底层实现原理

    2.2 synchronized的实现原理与应用 当一个线程A执行字节码时遇到monitorenter指令时,会首先检查该指令关联的Object的对象头中的Mark Word状态. 2.2.1 如果是 ...

  5. Redis之过期时间

    1.命令介绍 expire key seconds    设置key的有效时间,单位为秒expire命令返回1表示设置成功,返回0表示键不存在或设置失败. ttl keyttl命令返回值是键的剩余时间 ...

  6. day26 Python __getattribute__

    __getattr__#不存在的属性访问,触发__getattr__ class Foo: def __init__(self,x): self.x=x def __getattr__(self, i ...

  7. 接口测试,获取登录后的cookies

    参见: http://www.cnblogs.com/testwang/p/6023394.html

  8. 本地搭了http服务(localhost),怎么在vue环境下,通过axios获取到接口数据

    1. 找到 vue项目\config\index.js 文件 2. proxyTable: { '/api': { target: 'http://127.0.0.1:9420', changeOri ...

  9. face recognition[MobileFaceNet]

    本文来自<MobileFaceNets: Efficient CNNs for Accurate Real-Time Face Verification on Mobile Devices> ...

  10. Feature Extractor[inception v2 v3]

    0 - 背景 在经过了inception v1的基础上,google的人员还是觉得有维度约间的空间,在<Rethinking the Inception Architecture for Com ...