使用Elmah进行ASP.NET异常日志记录

在开发Web应用程序时,异常处理日志记录是两个非常重要的方面。良好的异常处理可以提高应用程序的稳定性和用户体验,而有效的日志记录则有助于开发者快速定位和解决问题。本文将介绍如何使用开源日志记录工具Elmah在ASP.NET应用程序中进行异常日志记录

Elmah(Error Logging Modules and Handlers)是一个开源日志记录工具,它可以将应用程序中的异常信息记录到一个中心仓库,并可以将异常通知发送给特定的人员。在开始使用Elmah之前,需要做一些准备工作,例如从官方网站下载Elmah的源代码,并在Microsoft SQL Server中创建一个名为Elmah_Errorlog的数据库。

创建数据库和存储过程

首先,需要创建一个数据库来存储Elmah的日志信息。在SQL Server中创建数据库后,需要创建一些表和存储过程来支持Elmah的日志记录功能。以下是创建Elmah_Errorlog数据库所需的SQL脚本:

CREATE TABLE [dbo].[ELMAH_Error](........) CREATE PROCEDURE [dbo].[ELMAH_GetErrorXml](.........) CREATE PROCEDURE [dbo].[ELMAH_GetErrorsXml](.......) CREATE PROCEDURE [dbo].[ELMAH_LogError](........

创建完数据库和存储过程后,数据库的结构将如下所示:

使用Elmah记录异常

接下来,将创建一个测试项目来展示如何使用Elmah记录异常。在Elmah解决方案中,创建了一个名为Elmah-TestHarness的Web项目,这是一个简单的ASP.NETWeb应用程序,只包含一个Default.aspx页面。将Elmah项目作为引用添加到这个测试项目中,以便使用Elmah.dll。

配置Web.Config

为了使用Elmah,需要修改Elmah-TestHarness项目的Web.Config文件。以下是Web.Config文件的配置内容:

<?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="elmah"> <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" /> <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" /> <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" /> <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" /> </sectionGroup> </configSections> <connectionStrings> <add name="elmah-express" connectionString="Server=KAZOL-PC\SQLEXPRESS08; Database=Elmah_Errorlog;Trusted_Connection=Yes;" /> </connectionStrings> <elmah> <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="elmah-express" /> <errorFilter> <test> <equal binding="HttpStatusCode" value="404" valueType="Int32" /> </test> </errorFilter> </elmah> <system.web> <compilation debug="true" targetFramework="4.0" /> <httpHandlers> <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" /> </httpHandlers> <httpModules> <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" /> </httpModules> </system.web> </configuration>

配置完Web.Config文件后,可以在Default.aspx页面中添加一个按钮来测试异常记录功能。以下是Default.aspx页面的代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Elmah_TestHarness._Default" %> <html> <head> <title>Elmah - Test Harness</title> </head> <body> <form id="frmMain" runat="server"> <h1>Elmah Test Harness</h1> <fieldset> <legend>Elmah Test harness controls</legend> <asp:Button ID="btnTest" runat="server" OnClick="btnTest_Click" Text="Exception Test" /> </fieldset> </form> </body> </html>

Default.aspx页面的代码后台如下:

namespace Elmah_TestHarness { using System; public partial class _Default : System.Web.UI.Page { protected void btnTest_Click(object sender, EventArgs e) { throw new Exception("test"); } } }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485