MVC4下配置log4net 五部曲

第一步:把log4net.dll 编译成Framework 4.0

 

第二步:找到项目的Properties下的AssemblyInfo。在最下面添加:[assembly: log4net.Config.XmlConfigurator(Watch = true)]。

 

第三步:Web.config

<configuration><configSections><section name="log4net" type="System.Configuration.IgnoreSectionHandler"/></configSections><log4net><appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"><file value="logs/"/><appendToFile value="true"/><rollingStyle value="Date"/><datePattern value="yyyy-MM-dd.TXT"/><staticLogFileName value="false"/><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date ThreadID:[%thread] Log Level:%-5level Class:%logger Desp:%message%newline"/></layout></appender><root><appender-ref ref="LogFileAppender"/></root></log4net>
</cconfiguration>

 

 

第四步:Global.asax Applicatin_Start方法内添加:ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

 

第五步:LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType).Error("logtest");

 

 

其它:全局性的 ERROR HANDLER

[ASP.NET MVC] Error Handling(3) – 全局性的 Error Handler

现在来看怎么让 HandleErrorAttribute 应用到整个网站?

只要定义全局性的 Error Handler 就行了。

在 /App_Start/FilterConfig.cs 里,里面会有一个 RegisterGlobalFilters() Method。
可以看到里面已经有一行 filters.Add(new HandleErrorAttribute()); 。
这行是预设的,意思就是他会捕捉到所有 Error,如果你在第一篇文章里,把这一行批注掉,那他无法捕捉 Error,最后就没办法显示我们自定义的 Error Page。

接着我们把第二章的程序改写在这边。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{filters.Add(new HandleErrorAttribute{ExceptionType = typeof(System.Data.DataException),View = "DatabaseError"});filters.Add(new HandleErrorAttribute());
}

这边要注意的是,他执行的顺序是由上而下的,当上面的 filter 无法捕捉错误 时,才会继续往下执行,而因为我们无法定义所有的错误,所以我们并不会把它默认的那一行程序删除,而是把我们的 filter 加在上面,这样才能确保抓到所有的错误。

而你也可以手动指定它们执行的顺序,只要加上第二个参数就行了。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{filters.Add(new HandleErrorAttribute{ExceptionType = typeof(System.Data.DataException),View = "DatabaseError"}, 1);filters.Add(new HandleErrorAttribute(), 2);
}

上面虽然写能抓到所有错误,但其实 HandleErrorAttribute 只能抓到 HTTP 500 系列的错误,如果像是 404 这种的就抓不到了,需要再另外定义。

现在我们把 web.config 的

<customErrors mode="On">
</customErrors>
改成
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm"><error statusCode="404" redirect="~/error/notfound"></error>
</customErrors>


有两个重点是

如果 web.config 有将 custom errors 设成 On,程序里面也有使用 HandleErrorAttribute,那在发生错误时,程序会自动导向到 Error.cshtml。

(它会在你当前页面的文件夹里寻找是否有 Error.cshtml ,如果找不到才会去 Views/Shared 里面找)

而忽略掉 customErrors 所设定的 defaultRedirect 跟里面的 <error statusCode="404" redirect="~/errortfound"></error>。 如果 web.config 有将 custom errors 设成 On,程序里面没有使用 HandleErrorAttribute,那在发生错误时,才会导向到 customErrors 所设定的 defaultRedirect 或里面的 <error statusCode="404" redirect="~/errortfound"></error>。

那如果要测试第二点,是不是要把 HandleErrorAttribute 的程序全删掉?
当然不用那么麻烦,只要把 Global.asax.cs 里面的 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 批注掉就行了。 
 

转载于:https://www.cnblogs.com/fuyu-blog/p/4435426.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法,俄罗斯方块

炮姐的88行代码,亮瞎了..有待研究 #include <windows.h> #include <stdio.h> #include <time.h> #include <conio.h> #include <stdlib.h> char gcText[] " 1LJTSZ#"; struct tetris {int _pool[16][32], (*pool)[32], tmap[8][4][16…

利用D触发器和异或门实现两个IO解读电机编码器的计数值和方向

目录反转变正转正转变反转iPad Pro 2020 14.8.1 仿真软件&#xff1a;iCircuit 突发奇想&#xff0c;做个记录。应该可以用于诸如51单片机、Arduino或是电赛中可能用到的MSP430G2553这类外设十分稀缺的单片机上。一个想法&#xff0c;啊&#xff0c;不一定对。 黄色波形是编码…

TCP协议的三次握手和四次分手

HTTP连接 HTTP协议即超文本传送协议(Hypertext Transfer Protocol )&#xff0c;是Web联网的基础&#xff0c;也是手机联网常用的协议之一&#xff0c;HTTP协议是建立在TCP协议之上的一种应用。HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应&#xff0c;在请…

CountDownLatch线程同步辅助

2019独角兽企业重金招聘Python工程师标准>>> http://bughope.iteye.com/blog/2081935 在上一篇文章中写道用一个静态的变量保存线程的执行状态,并用时间等待的方法后来仔细考虑,其实是 线程不安全的.多个线程同时执行这个类时,这个静态变量的值就不能保证了. 用一个…

SQLServer链接服务器至Oracle

1. 我方服务器必须安装msdtc服务&#xff0c;并进行相应配置。 2. 我方服务器必须安装oracle client&#xff0c;这个要对应中心站oracle版本的客户端。 3. 我方服务器必须安装Oracle Services For Microsoft Transaction Server [版本] Oracle Provid…

【51单片机快速入门指南】3.1:配置外部中断触发方式和中断优先级

目录源码EXTI.cEXTI.hmain.c实验现象普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 源码 stdint.h见【51单片机快速入门指南】1&#xff1a;基础知识和工程创建 中断知识见【51单片机快速入门指南】3&#xff1a;中断系统 将…

(转)工厂方法模式

转自&#xff1a;http://www.jellythink.com/archives/62 问题描述 之前讲到了C设计模式——简单工厂模式&#xff0c;由于简单工厂模式的局限性&#xff0c;比如&#xff1a;工厂现在能生产ProductA、ProductB和ProductC三种产品了&#xff0c;此时&#xff0c;需要增加生产Pr…

一种父线程阻塞等待子线程的有效方法

最近在做一个查询优化时&#xff0c;考虑到一次查询耗时较多&#xff0c;所以打算用多线程来做&#xff0c;之前是串行查询。比如一个用户查询触发50个线程&#xff0c;在只有一个用户的情况下&#xff0c;性能比串行查询确实提高了许多&#xff0c;但当多个用户同时触发查询的…

C语言利用循环队列实现滑动平均值滤波器,提高计算速度

目录源码Filter.cFilter.h使用效果普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 串口示波器&#xff1a;Vofa 1.3.10 网上查到的滑动平均值滤波器在计算平均值的时候还要再for累加一遍&#xff0c;这太浪费时间了&#xff0c…

iOS 计算文字宽度的一个细节

设计师给到的图&#xff0c;经常是 “按钮的左边距离文字右边5px” 这样子的标注。于是我们需要计算文字的宽度。 有两种方法&#xff1a; 用 label 或 button 的 sizetofit 方法 [label sizeToFit]; NSLog("label size is %",[NSValue valueWithCGSize:label.boun…

Exchange Server 2013日记功能

9.6 日记9.6.1 日记功能为什么很重要首先&#xff0c;了解日记功能与存档功能之间的区别十分重要&#xff1a;首先&#xff0c;了解日记功能与存档功能之间的区别十分重要&#xff1a; “日记”可以记录组织中的所有通信&#xff08;包括电子邮件通信&#xff09;&#xff0c;以…

VB数据库经典实例总结(二)

大家先看一张似图非图的图、 我们先称它为“过程”也许有不对的地方&#xff0c;在我学数据库到这个阶段、到这个刚刚接触、初生牛犊不怕虎的阶段对它的理解是这样的、所有的都是这个过程、只是在这中间掺杂了一些知识点&#xff08;我们要掌握的&#xff09;针对有些个别的&am…

适用于单片机的FFT快速傅里叶变换算法,51单片机都能用

目录源码FFT.cFFT.h使用方法效果其他部分的代码main.c普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 算法来自FFT算法的使用说明与C语言版实现源码 —— 原作者&#xff1a;吉帅虎 速度更快的版本见C语言实现的FFT与IFFT源代码…

第9课 - 函数重载分析(下)

第9课 - 函数重载分析&#xff08;下&#xff09; 1. 重载与指针 1.1 下面的函数指针将保存哪个函数的地址&#xff1f; 1.2 函数重载遇上函数指针 将重载函数名赋值给函数指针时&#xff1a; &#xff08;1&#xff09;根据重载规则挑选与函数指针参数列表一致的候选者 &#…

常见窗函数的C语言实现及其形状,适用于单片机、DSP作FFT运算

目录源码WindowFunction.cWindowFunction.h使用形状三角窗巴特利特窗巴特利特-汉宁窗布莱克曼窗布莱克曼-哈里斯窗博曼窗切比雪夫窗平顶窗高斯窗海明窗汉宁窗纳托尔窗Parzen窗矩形窗&#xff08;模拟&#xff09;效果无窗汉宁窗平顶窗平台&#xff1a;Windows 10 20H2 Visual …

cs

cs.yuneasy.cn 7989root yuneas123killall -9 caps cd capserver ./caps -cx转载于:https://www.cnblogs.com/bevis/p/3152633.html

.net Json JavaScriptSerializer JsonHelper类

结合.net 的JavaScriptSerializer 类实现Json数据处理 调用1&#xff1a; Model.Users m BLL.UsersBLL.GetUserById(Convert.ToInt32(id));string result "";if (m ! null)result JsonHelper.ObjectToJSON(m);context.Response.Write(result); 调用2&#xff…

C语言实现的FFT与IFFT源代码,不依赖特定平台

目录源码FFT.cFFT.h使用方法初始化输入数据FFT 快速傅里叶变换解算FFT结果使用python绘制FFT波形IFFT 快速傅里叶逆变换解算IFFT结果Windows 10 20H2 Visual Studio 2015 Python 3.8.12 (default, Oct 12 2021, 03:01:40) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on …

产品经理能力产品经理工作积累(3)

每日一贴,今天的内容关键字为产品经理能力 按职业司理的层次模型产品司理又可分工匠型,元帅型和老师型. (1). 工匠型 工匠型产品司理主要的代价在于:在某个专业领域里其技能的娴熟水平. (2). 元帅型 元帅型产品司理,可以在一个领域中带领一帮人来完成一个特定的项目.他的能力体…

垂直和水平居中方法小结

水平居中 行内元素 text-align:center; 块元素 1.定宽块元素水平居中 margin:0 auto; 2.不定宽块元素水平居中 方法一&#xff1a;利用浮动的包裹性和百分比相对定位 <div classouter><div classinner></div> </div> 我们想要使inner(不定宽)水平居中于…