ELMAH (ASP.NET错误日志处理)使用方法
2013-01-12 18:55
791 查看
转:http://www.oschina.net/question/12_9124
ELMAH(Error Logging Modules and Handlers for ASP.NET )是一款ASP.NET下的系统错误记录管理工具,它可以非常方便的把“黄屏”错误记录到XML,MS SQLServer,SQLite,MySql等文件中,甚至它还可以发送邮件。
这里我就记一下使用它的方法。本文以记录到MS SQL Server 2005为例:
1. 下载ELMAH
ELMAH官方地址:http://code.google.com/p/elmah/
版本:ELMAH-1.1-bin.zip
2.把dll文件复制到项目的bin目录下。
DLL文件:Elmah.dll
版本:1.0.9414.1441
大小:114688 bytes ( 112.000 KB, 0.109 MB )
3.设置Web.config
4.向数据添加表
5 预览
http://localhost/youresiteName/elmah.axd
可能需要先登录login.aspx.如果不需要登录,可以在web.config里删掉相应代码.
ELMAH(Error Logging Modules and Handlers for ASP.NET )是一款ASP.NET下的系统错误记录管理工具,它可以非常方便的把“黄屏”错误记录到XML,MS SQLServer,SQLite,MySql等文件中,甚至它还可以发送邮件。
这里我就记一下使用它的方法。本文以记录到MS SQL Server 2005为例:
1. 下载ELMAH
ELMAH官方地址:http://code.google.com/p/elmah/
版本:ELMAH-1.1-bin.zip
2.把dll文件复制到项目的bin目录下。
DLL文件:Elmah.dll
版本:1.0.9414.1441
大小:114688 bytes ( 112.000 KB, 0.109 MB )
3.设置Web.config
xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <错误日志管理系统 > <sectionGroup name="elmah"> <section name="security" type="Elmah.SecuritySectionHandler, Elmah"/> <section name="errorLog" type="Elmah.ErrorLogSectionHandler, Elmah"/> <section name="errorMail" type="Elmah.ErrorMailSectionHandler, Elmah"/> <section name="errorFilter" type="Elmah.ErrorFilterSectionHandler, Elmah"/> <sectionGroup> <configSections> <elmah> <security allowRemoteAccess="0" /> <errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ConnectionString" /> <elmah> < elmah只允许管理员访问> <location path="elmah.axd"> <system.web> <authorization> <deny users="?"/> <allow users="Admin"/> <authorization> <system.web> <location> <appSettings />
< 连接字符串> <connectionStrings> <add name="ConnectionString" connectionString="Data Source=qq\SQLEXPRESS;Initial Catalog=xx;User ID=xx;Password=xx" providerName="System.Data.SqlClient" /> <connectionStrings> <system.web> <httpHandlers> <add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> <httpHandlers> <httpModules> <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/> <httpModules> <compilation debug="true" /> <authentication mode="Forms"> <forms loginUrl="login.aspx" name=".ASPXAUTH"><forms> <authentication> <authorization> <deny users="*"/> <authorization> <system.web> <configuration>
4.向数据添加表
/* 错误管理工具 SQL代码 */ CREATE TABLE dbo.ELMAH_Error ( ErrorId UNIQUEIDENTIFIER NOT NULL, Application NVARCHAR(60) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, Host NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, Type NVARCHAR(100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, Source NVARCHAR(60) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, Message NVARCHAR(500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, [User] NVARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, StatusCode INT NOT NULL, TimeUtc DATETIME NOT NULL, Sequence INT IDENTITY (1, 1) NOT NULL, AllXml NTEXT COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE dbo.ELMAH_Error WITH NOCHECK ADD CONSTRAINT PK_ELMAH_Error PRIMARY KEY NONCLUSTERED ( ErrorId ) ON [PRIMARY] GO ALTER TABLE dbo.ELMAH_Error ADD CONSTRAINT DF_ELMAH_Error_ErrorId DEFAULT (newid()) FOR [ErrorId] GO CREATE NONCLUSTERED INDEX IX_ELMAH_Error_App_Time_Seq ON dbo.ELMAH_Error ( [Application] ASC, [TimeUtc] DESC, [Sequence] DESC ) ON [PRIMARY] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE dbo.ELMAH_GetErrorXml ( @Application NVARCHAR(60), @ErrorId UNIQUEIDENTIFIER ) AS SET NOCOUNT ON SELECT AllXml FROM ELMAH_Error WHERE ErrorId = @ErrorId AND Application = @Application GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE dbo.ELMAH_GetErrorsXml ( @Application NVARCHAR(60), @PageIndex INT = 0, @PageSize INT = 15, @TotalCount INT OUTPUT ) AS SET NOCOUNT ON DECLARE @FirstTimeUTC DateTime DECLARE @FirstSequence int DECLARE @StartRow int DECLARE @StartRowIndex int -- Get the ID of the first error for the requested page SET @StartRowIndex = @PageIndex * @PageSize + 1 SET ROWCOUNT @StartRowIndex SELECT @FirstTimeUTC = TimeUTC, @FirstSequence = Sequence FROM ELMAH_Error WHERE Application = @Application ORDER BY TimeUTC DESC, Sequence DESC -- Now set the row count to the requested page size and get -- all records below it for the pertaining application. SET ROWCOUNT @PageSize SELECT @TotalCount = COUNT(1) FROM ELMAH_Error WHERE Application = @Application SELECT errorId, application, host, type, source, message, [user], statusCode, CONVERT(VARCHAR(50), TimeUtc, 126) + 'Z' time FROM ELMAH_Error error WHERE Application = @Application AND TimeUTC <= @FirstTimeUTC AND Sequence <= @FirstSequence ORDER BY TimeUTC DESC, Sequence DESC FOR XML AUTO GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO CREATE PROCEDURE dbo.ELMAH_LogError ( @ErrorId UNIQUEIDENTIFIER, @Application NVARCHAR(60), @Host NVARCHAR(30), @Type NVARCHAR(100), @Source NVARCHAR(60), @Message NVARCHAR(500), @User NVARCHAR(50), @AllXml NTEXT, @StatusCode INT, @TimeUtc DATETIME ) AS SET NOCOUNT ON INSERT INTO ELMAH_Error ( ErrorId, Application, Host, Type, Source, Message, [User], AllXml, StatusCode, TimeUtc ) VALUES ( @ErrorId, @Application, @Host, @Type, @Source, @Message, @User, @AllXml, @StatusCode, @TimeUtc ) GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
5 预览
http://localhost/youresiteName/elmah.axd
可能需要先登录login.aspx.如果不需要登录,可以在web.config里删掉相应代码.
相关文章推荐
- ELMAH (ASP.NET错误日志处理)使用方法
- ASP.NET错误日志处理模块 ELMAH
- ASP.NET下的系统错误记录管理工具 ELMAH使用方法
- asp.net错误捕获(错误处理)page_error事件使用方法
- asp.net 错误日志处理推荐----ELMAH
- asp.net错误捕获(错误处理)page_error事件使用方法
- Asp.Net : 捕捉和记录网站中出现的所有未处理错误,抛出详细的页面来源和访问ip,调用的接口方法及异常实例(记事本日志,系统日志及数据库日志)
- ASP.NET错误处理方法归结(方法1):page_error 事件
- ASP.NET记录错误日志的实现方法
- ASP.NET生成eurl.axd Http异常错误处理方法
- ASP.NET AJAX使用UpdatePanel控件+Response.Write()报错 处理方法
- ElMAH(ASP.NET错误日志记录与通知)系列文章-基础应用篇
- asp.net 发布到IIS中出现”处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”“错误的解决方法
- Asp.net错误日志处理
- 使用Global.asax在ASP.NET中记录错误日志
- 在ASP.NET MVC 3中使用日志记录组件Elmah和NLog
- ASP.NET错误处理方法归结(方法2):Application_Error 事件
- EF Core使用SQL调用返回其他类型的查询 ASP.NET Core 2.0 使用NLog实现日志记录 CSS 3D transforms cSharp:use Activator.CreateInstance with an Interface? SqlHelper DBHelper C# Thread.Abort方法真的让线程停止了吗? 注意!你的Thread.Abort方法真
- asp.net 发布到IIS中出现”处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”“错误的解决方法
- Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)