Log4Net与MVC结合的日志处理技术

我们在开发web项目中,总会遇到一些异常,或是需要记录一些信息。我们也基本都是通过程序写日志的方式,来记录程序的异常信息,以及其他信息。那么今天,我来写了一个Demo分享一下.NET中,关于日志处理的一个技术,Log4Net.下面是自己总结的一些步骤,没有太多理论解释。跟着步骤,即可完成!
    1.添加程序集引用
这当然是必不可少的一步,关于程序集,我们在网上也都能下载!

2.在models文件夹里面建一个类。MyExceptionAttribute:HandleErrorAttribute(注意:前面为类名,后面为继承的类)内部代码如下

public class MyExceptionAttribute:HandleErrorAttribute

{

public static Queue<Exception> ExceptionQueue = new Queue<Exception>();//建立一个队列

public override void OnException(ExceptionContext filterContext)

{

base.OnException(filterContext);

ExceptionQueue.Enqueue(filterContext.Exception);//将异常信息添加到队列中

filterContext.HttpContext.Response.Redirect("/Error.html");//跳转到错误页面,需要建立一个错误页面

}

}

3.修改App_Start-FilterConfig里面的方法(注释掉原有的类,采用自己刚才创建的类)

public static void RegisterGlobalFilters(GlobalFilterCollection filters)

{

// filters.Add(new HandleErrorAttribute());

filters.Add(new Models.MyExceptionAttribute());//使用自己的类

}

4.设置配置文件的配置信息
注:这里的配置文件,设置了关于之日文件的格式等。我这里是按照日期新建,也就是一天 新建一个文件,一天之内的日志都会记录在同一个文本内

<configSections>

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

</configSections>

<log4net>

<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->

<!-- Set root logger level to ERROR and its appenders -->

<root>

<level value="ALL"/>

<appender-ref ref="SysAppender"/>

</root>

<!-- Print only messages of level DEBUG or above in the packages -->

<logger name="WebLogger">

<level value="DEBUG"/>

</logger>

<appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net" >

<param name="File" value="App_Data/" />

<param name="AppendToFile" value="true" />

<param name="RollingStyle" value="Date" />

<param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />

<param name="StaticLogFileName" value="false" />

<layout type="log4net.Layout.PatternLayout,log4net">

<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />

<param name="Header" value=" ----------------------header-------------------------- " />

<param name="Footer" value=" ----------------------footer-------------------------- " />

</layout>

</appender>

<appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">

<layout type="log4net.Layout.PatternLayout,log4net">

<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />

</layout>

</appender>

</log4net>

5.在global文件的Application_Start()方法的第一行,添加这个语句

log4net.Config.XmlConfigurator.Configure();//读取配置文件中,关于lognet的配置信息具体如下
注:这句代码是读取配置文件中关于lognet的配置信息,必须写在程序的入口处,那自然是global文件下的Application_Start()方法了

6.在global文件下的Application_Start()中添加写日志的代码,如下

protected void Application_Start()

{

log4net.Config.XmlConfigurator.Configure();//读取配置文件中,关于lognet的配置信息

AreaRegistration.RegisterAllAreas();

WebApiConfig.Register(GlobalConfiguration.Configuration);

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

RouteConfig.RegisterRoutes(RouteTable.Routes);

BundleConfig.RegisterBundles(BundleTable.Bundles);

string fileLogPath = Server.MapPath("/Log/");

//线程池

ThreadPool.QueueUserWorkItem((a) => {

while (true)

{

if (Models.MyExceptionAttribute.ExceptionQueue.Count() > 0)

{

Exception ex = Models.MyExceptionAttribute.ExceptionQueue.Dequeue();//出队

//创建文件

if (ex != null)

{

ILog logger=LogManager.GetLogger("errorrMsg");//起一个名字

logger.Error(ex.ToString());

}

else

{

Thread.Sleep(3000);//如果队列中没有消息休息3秒,千万不能少

}

}

else

{

Thread.Sleep(3000);//如果队列中没有消息休息3秒,千万不能少

}

}

},fileLogPath);


这样就大功告成了, 另附生成后的日志代码截图一张。
下面我们故意抛一个异常

public ActionResult Show()

{

int b = 0;

int c = 9 / b;

return Content(c.ToString());

}
文件配置在了App_Data文件夹中
日志代码截图如下

时间: 2024-11-01 21:26:44

Log4Net与MVC结合的日志处理技术的相关文章

log4net 记录MVC监控日志

由于MVC自身的特点,可以让我们记录每一个Controller下Action的执行时间以及View视图渲染完成的时间,本文采用log4net记录MVC每个Action的执行时间和View视图渲染完成时间,以及请求Action时post或get的数据.这样通过日志记录的时间方便我们定位哪一个Action和View执行的时间过长,进而采取优化的手段. 监控日志监控的指标如下图 监控程序实现 改监控程序主要继承ActionFilterAttribute类,并重写其中的OnActionExecuted.

使用maven,spring mvc框架结构 java jq等技术开发的

http://zhidao.baidu.com/link?url=zPPLZ8yo-UUaclBCxVwzmh8mlfPIxeM7Jl-Xb7gmI5tz8lm8tN_DDx7PrGAF-cfOPy_EGG-VFDTaCTIAQvtu0a 使用maven,spring mvc框架结构 java jq等技术开发的,码迷,mamicode.com

ASP.NET Core MVC之Serilog日志处理,你了解多少?

前言 本节我们来看看ASP.NET Core MVC中比较常用的功能,对于导入和导出目前仍在探索中,项目需要自定义列合并,所以事先探索了如何在ASP.NET Core MVC进行导入.导出,更高级的内容还需等我学习再给出. EntityFramework Core 在学习ASP.NET Core MVC之前我们来看看在EF Core中如何更新对象指定属性,这个问题之前我们已经探讨过,但是还是存在一点问题,请往下看. public void Update(T entity, params Expr

Log4Net在MVC下的配置以及运用线程队列记录异常信息

Log4Net是用来记录日志的,可以将程序运行过程中的信息输出到一些地方(文件.数据库.EventLog等),日志就是程序的黑匣子,可以通过日志查看系统的运行过程,从而发现系统的问题.日志的作用:将运行过程的步骤.成功失败记录下来,将关键性的数据记录下来分析系统问题所在.Log4J.对于网站来讲,不能把异常信息显示给用户,异常信息只能记录到日志,出了问题把日志文件发给开发人员,就能知道问题所在. 配置Log4Net环境 (1)新建一个WebApplication (2)添加对log4net.dl

MVC使用 Elmah 日志记录组件

简介 ELMAH(Error Logging Modules and Handlers)错误日志记录模块和处理程序,是一种应用广泛的错误日志工具是完全可插拔.它可以动态添加到一个正在运行的ASP.NET Web应用程序,甚至是一台机器上的所有ASP.NET Web应用程序,而无需重新编译或重新部署. ELMAH既支持ASP.NET Web Forms 又支持 ASP.NET MVC.你可以对ELMAH进行配置来存储各种不同的错误(XML文件,事件日志,Access数据库,SQL数据库,Oracl

搭建基于spring MVC框架 + RESTful架构风格技术总结

实战篇: 在SpringMVC框架中搭建RESTful架构风格来完成客户端与服务器端的低耦合度.可扩展性.高并发与大数据流量的访问. 用RESTful架构的创建步骤: 1.创建一个全新的Web工程 2.导包,导入所需要的所有第三方jar包.(springMVC+Hibernate的基本包是必须的) 3.作配置,针对不同的项目需求和不同的搭建设计,开发人员可以按照自己的编码风格来设计符合项目开发具体 应该用多少篇配置文件.但是这几篇配置文件是必不可少的: 3-1.web.xml配置文件:最基本的配

MVC框架显示层——Velocity技术

转自:  http://blog.csdn.net/fasttalk/article/details/398059 Velocity,名称字面翻译为:速度.速率.迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts(Taglib和Tiles)是如何联系?在技术上Velocity要比Struts Struts(Taglib和Tiles)先进,单从技术上考虑可以考虑Velocity:而Struts用的非常普遍,这样的人才也很多,所以对于公司来

Oracle LogMiner日志挖掘技术_超越OCP精通Oracle视频课程培训21

oracle视频教程目标 Oracle视频教程,风哥本套oracle教程培训学习oracle数据库LogMiner相关概念及使用详解,LogMiner使用源数据库的数据字典分析,提取LogMiner字典到字典文件来分析,LogMiner如何查看日志分析结果,LogMiner日志挖掘案例-分析生产系统表数据丢失的原因,恢复DML误操作导致的表数据丢失,结合RMAN进行表空间时间点恢复 适用人群IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以. 视频在线学习地址: http:

ASP.NET MVC中错误日志信息记录

MVC中有一个处理异常的过滤器 HandleErrorAttribute 1.新建一个类继承自 HandleErrorAttribute,然后重写OnException这个方法 public class MyExceptionAttribute:HandleErrorAttribute { /// <summary> /// 可捕获异常数据 /// </summary> /// <param name="filterContext"></par