65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Elmah 进行异常日志记录 - ASP.NET 的错误日志记录模块和处理程序

starIconstarIconstarIconstarIconstarIcon

5.00/5 (6投票s)

2011 年 4 月 30 日

CPOL

2分钟阅读

viewsIcon

64049

downloadIcon

2591

使用 Elmah 进行异常日志记录 - ASP.NET 的错误日志记录模块和处理程序

引言

异常日志记录是应用程序维护中最重要的部分之一。 我们可以使用许多开源记录器应用程序将异常详细信息记录到中央存储库,并将异常通知发送给特定人员。 Elmah - 错误日志记录模块和处理程序就是其中之一。 有关 Elmah 的详细信息,请访问 此链接,有关如何使用它的详细信息,请访问 此链接

背景

在本文中,我也会做同样的事情,即讨论如何在 ASP.NET 应用程序中使用 Elmah。 在我开始之前,我们需要做一些准备工作,例如从 此处下载 Elmah 的源代码。 然后我在 Microsoft SQL Server 中创建了一个名为 Elmah_Errorlog 的数据库; 对于此实例,我使用 SQL 2008。 目前数据库就绪了。 我们稍后创建表和存储过程。 我解压缩了 Elmah 源代码,并通过 Visual Studio 打开了解决方案。 通过 Visual Studio 打开 Elmah 后,有一个名为 SQLServer.sql 的文件,打开此文件并从该文件中复制以下表和存储过程创建 SQL 代码,然后运行到 SQL Server 查询窗口以创建 Elmah_Errorlog 数据库的表和存储过程。

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

创建数据库后,模式将显示如下

Using the Code

因此,我已经创建了 Elmah 的数据库,现在我将创建一个测试 Harness 项目来演示如何使用 Elmah 记录错误。 在 Elmah 解决方案中,我创建了一个名为 Elmah-TestHarness 的 Web 项目,这是一个简单的 ASP.NET Web 应用程序,只有 Default.aspx 页面。 我将 Elmah 项目作为引用添加到此测试 Harness,以使用 Elmah.dll

最重要的事情是修改 Web.Config 文件,以便 Elmah-TestHarness Web 项目使用 Elmah。 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>

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");
        }
    }
} 

现在一切准备就绪,单击 F5(确保 Elmah_TestHarness 项目已设置为解决方案中的启动应用程序),我看到以下输出

单击“异常测试”按钮将引发异常,Elmah 会在后台捕获该异常并将其记录到 Elmah_Errorlog 数据库中。 Elmah 还公开了一个 HttpHandler ,用于查看异常详细信息。 Chrome 的另一个选项卡写入以下 URL localhost:28350/Elmah.asxd,然后它将显示如下

历史

  • 2011 年 4 月 30 日:初始发布
© . All rights reserved.