ASP.NET的错误处理机制之二(实例log4net)

一、log4net下载:http://logging.apache.org/log4net/download_log4net.cgi

二、web.config配置如下:

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <configuration>
 3  <configSections>
 4   <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
 5  </configSections>
 6  <log4net>
 7   <logger name="logerror">
 8    <level value="ERROR" />
 9    <appender-ref ref="ErrorAppender" />
10   </logger>
11   <logger name="loginfo">
12    <level value="INFO" />
13    <appender-ref ref="InfoAppender" />
14   </logger>
15   <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
16    <param name="File" value="Log\\LogError\\" />
17    <param name="AppendToFile" value="true" />
18    <param name="MaxSizeRollBackups" value="100" />
19    <param name="MaxFileSize" value="10240" />
20    <param name="StaticLogFileName" value="false" />
21    <param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
22    <param name="RollingStyle" value="Date" />
23    <layout type="log4net.Layout.PatternLayout">
24     <param name="ConversionPattern" value="&lt;HR COLOR=red&gt;%n异常时间:%d [%t] &lt;BR&gt;%n异常级别:%-5p
25    &lt;BR&gt;%n异 常 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
26    </layout>
27   </appender>
28   <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
29    <param name="File" value="Log\\LogInfo\\" />
30    <param name="AppendToFile" value="true" />
31    <param name="MaxFileSize" value="10240" />
32    <param name="MaxSizeRollBackups" value="100" />
33    <param name="StaticLogFileName" value="false" />
34    <param name="DatePattern" value="yyyyMMdd&quot;.htm&quot;" />
35    <param name="RollingStyle" value="Date" />
36    <layout type="log4net.Layout.PatternLayout">
37     <param name="ConversionPattern" value="&lt;HR COLOR=blue&gt;%n日志时间:%d [%t] &lt;BR&gt;%n日志级别:%-5p
38    &lt;BR&gt;%n日 志 类:%c [%x] &lt;BR&gt;%n%m &lt;BR&gt;%n &lt;HR Size=1&gt;" />
39    </layout>
40   </appender>
41  </log4net>
42  <system.web>
43   <compilation defaultLanguage="c#" debug="true" />
44   <customErrors mode="RemoteOnly" />
45   <authentication mode="Windows" />
46   <authorization>
47    <allow users="*" />
48   </authorization>
49   <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
50   <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
51    cookieless="false" timeout="20" />
52   <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
53  </system.web>
54 </configuration>

三、LOG操作类:

 1 using System;
 2 using System.IO;
 3
 4 namespace SystemLog
 5 {
 6     /// <summary>
 7     /// LogHelper的摘要说明。
 8     /// </summary>
 9     public class LogHelper
10     {
11
12         public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
13
14         public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
15
16         public static void SetConfig()
17         {
18             log4net.Config.XmlConfigurator.Configure();
19         }
20
21         public static void SetConfig(FileInfo configFile)
22         {
23             log4net.Config.XmlConfigurator.Configure(configFile);
24         }
25
26         public static void WriteLog(string info)
27         {
28             if(loginfo.IsInfoEnabled)
29             {
30                 loginfo.Info(info);
31             }
32         }
33
34         public static void WriteLog(string info,Exception se)
35         {
36             if(logerror.IsErrorEnabled)
37             {
38                 logerror.Error(info,se);
39             }
40         }
41     }
42 }

四、Global.asax.cs文件配置如下:

 1 <%@ Application Language="C#" %>
 2 <%@ Import Namespace="SystemLog" %>
 3
 4 <script runat="server">
 5
 6     void Application_Start(object sender, EventArgs e)
 7     {
 8         // 在应用程序启动时运行的代码
 9         LogHelper.SetConfig();
10     }
11
12     void Application_End(object sender, EventArgs e)
13     {
14         //  在应用程序关闭时运行的代码
15
16     }
17
18     void Application_Error(object sender, EventArgs e)
19     {
20         // 在出现未处理的错误时运行的代码
21         Exception objExp = HttpContext.Current.Server.GetLastError();
22         LogHelper.WriteLog("客户机IP:" + Request.UserHostAddress + "<br/>错误地址:" + Request.Url + "<br/>异常信息:" + Server.GetLastError().Message, objExp);
23     }
24
25     void Session_Start(object sender, EventArgs e)
26     {
27         // 在新会话启动时运行的代码
28
29     }
30
31     void Session_End(object sender, EventArgs e)
32     {
33         // 在会话结束时运行的代码。
34         // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为 InProc 时,才会引发 Session_End 事件。
35         // 如果会话模式设置为 StateServer
36         // 或 SQLServer,则不会引发该事件。
37
38     }
39
40 </script>

五、页级别处理:

1 try
2 {
3     string str = Request.QueryString["a"].ToString();
4 }
5 catch (Exception ex)
6 {
7     LogHelper.WriteLog("ErrorInfo", ex);
8 }

六、效果:

本文参考原文:http://fanrsh.cnblogs.com/archive/2006/06/08/420546.html

时间: 2024-10-28 21:27:32

ASP.NET的错误处理机制之二(实例log4net)的相关文章

ASP.NET的错误处理机制之一(概念)

对Web应用程序来说,发生不可预知的错误和异常在所难免,我们必须为Web程序提供错误处理机制.当错误发生时,我们必须做好两件事情:一是将错误信息记录日志,发邮件通知网站维护人员,方便技术人员对错误进行跟踪处理:二是以友好的方式提示最终用户页面发生了错误,而不能将未处理的错误信息显示给用户. 让我们想想,ASP.NET为我们提供了几种错误处理机制?如果同时使用他们是不是有一定的优先级?.NET提供了四种错误处理机制,它们有一定的优先级顺序:Page_Error事件>ErrorPage属性>App

ASP.NET的错误处理机制

对于一个Web应用程序来说,出错是在所难免的,因此我们应该未雨绸缪,为可能出现的错误提供恰当的处理.事实上,良好的错误处理机制正是衡量Web应用程序好坏的一个重要标准.试想一下,当用户不小心在浏览器输入了错误的URL或者当用户提供了一些信息导致程序出错的时候,如果我们没有对这些情况进行处理,而是任由404或是500的错误页面甚至出错的堆栈信息呈现在用户面前,这无疑会把一些用户给吓跑.所以,在我们开发Web应用程序的时候,应该对错误处理机制有充分的了解. 让我们回到ASP.NET上来,先提两个问题

asp.net自定义错误页面

ASP.NET 提供三种用于在出现错误时捕获和响应错误的主要方法:Page_Error 事件.Application_Error 事件以及应用程序配置文件 (Web.config). 如果您不调用 Server.ClearError 或者捕获 Page_Error 或 Application_Error 事件中的错误,则将根据 Web.config 文件的 <customErrors> 部分中的设置处理错误.在 <customErrors> 部分,可将重定向页指定为默认的错误页 (

通过扩展改善ASP.NET MVC的验证机制[使用篇]

原文:通过扩展改善ASP.NET MVC的验证机制[使用篇] ASP.NET MVC提供一种基于元数据的验证方式是我们可以将相应的验证特性应用到作为Model实体的类型或者属性/字段上,但是这依然具有很多的不足.在这篇文章中,我结合EntLib的VAB(Validation Application Block)的一些思想通过扩展为ASP.NET MVC提供一种更为完善的验证机制.[源代码从这里下载] 目录: 一.扩展旨在解决怎样的验证问题 二.一个简单的消息维护组件 三.多语言的支持 四.基于某

通过扩展改善ASP.NET MVC的验证机制[实现篇]

原文:通过扩展改善ASP.NET MVC的验证机制[实现篇] 在<使用篇>中我们谈到扩展的验证编程方式,并且演示了本解决方案的三大特性:消息提供机制的分离.多语言的支持和多验证规则的支持,我们现在来看看这样的验证解决方案最终是如何实现的. 目录: 一.为验证创建一个上下文:ValidatorContext 二.通过自定义ActionInvoker在进行操作执行之前初始化上下文 三.为Validator创建基类:ValidatorBaseAttribute 四.通过自定义ModelValidat

使用ASP.Net WebAPI构建REST服务(二)——路由

REST并没有像传统的RPC服务那样显式指定了服务器函数的访问路径,而是将URL根据一定的规则映射为服务函数入口,这个规则就称之为路由.Asp.Net WebAPI的路由方式和Asp.Net MVC是相同的,它支持两种路由方式,传统的路由映射和特性路由. 路由规则WebApiConfig.cs中定义,它的默认内容如下: publicstaticclassWebApiConfig    {        publicstaticvoid Register(HttpConfiguration con

Asp.Net Mvc: 浅析TempData机制(转发 作者: Tristan G )

Asp.Net Mvc: 浅析TempData机制 环境: Windows 2008, VS 2008 SP1, Asp.Net Mvc 1.0 ------------------------------------------------------------------------------ 一. Asp.Net Mvc中的TempData 在Asp.Net Mvc框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictio

深入理解ASP.NET的内部运行机制(转)

WebForms和WebServices作为.NET平台构建Web程序的两大利器,以其开发简单.易于部署的特点得到了广泛的应用,但殊不知微软公司在背后为我们做了大量的基础性工作,以至于我们开发人员只需简单地拖拖控件.写写一些页面级的代码就可以轻松地实现一些简单的应用程序.当然这种封装也不是没有好处的,至少从开发的角度而言它就可以极大地降低开发的难度,但是这种过度的封装使得我们开发人员当遇到有可能由底层引起的问题时就会束手无策,而且也会使得我们对知识的掌握和理解只停留在了表面而不得其内在本质.正是

asp.net运行原理及机制

当一个HTTP请求到服务器并被IIS接收到之后,IIS首先通过客户端请求的页面类型为其加载相应的.dll文件,然后在处理过程中将这条请求发送给能够处理这个请求的模块.在ASP.NET 3.5中,这个模块叫做HttpHandler(HTTP处理程序组件),之所以.aspx文件可以被服务器处理,就是因为在服务器端有默认的HttpHandler专门处理.aspx文件.IIS在将这条请求发送给能够处理这个请求的模块之前,还需要经过一些HttpModule的处理,这些都是系统默认的Modules(用于获取