Elmah使用总结
来源:互联网 发布:李松蔚 信仰 知乎 编辑:程序博客网 时间:2024/06/03 19:14
简介:
Elmah用来记录应用程序运行时所产生的错误,可以采用数据库、本地文件(XML)、内存的方式来进行日志的记录。
本文采用VS2015创建ASP.NET MVC5的方式结合Elmah进行Demo讲解
在VS2015 Nuget中添加Elmah
添加完Almah后,将会自动在web.config文件中配置好Almah所需要的配置文件,此时默认的记录日志方式是内存记录,停止运行,将会自动销毁记录
以下为三种方式使用的总结:
一、内存存储方式
默认为内存存储
二、文件存储:XML方式,配置下面的文件即可
<elmah>
<security allowRemoteAccess="false" />
<!--采用本地本地文件:XML存储错误日志-->
</elmah>
三、数据库存储:Sql Server方式,先在你的Sql Server数据库中,执行文章最后的SQL脚本(生成表和相关存储过程视图等),然后配置数据库连接
<elmah>
<security allowRemoteAccess="false" />
<!--采用数据库:SQL Server记录日志-->
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="MusicStoreDB" />
</elmah>
Elmah 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
select * from ELMAH_Error
- Elmah使用总结
- ELMAH的使用
- elmah的使用
- elmah的使用
- ELMAH使用方法
- Elmah log4net
- 关于日志管理Elmah的使用(我这里只谈Access的)
- Elmah 日志记录组件
- Elmah 日志记录组件
- 网站记录错误日志的工具ELMAH
- ASP.NET错误日志处理模块 ELMAH
- Elmah框架,添加日志文件访问权限
- Elmah框架,添加日志文件访问权限
- ELMAH——可插拔错误日志工具
- ELMAH——可插拔错误日志工具
- Tip - ASP.NET程序Error Logging工具: ELMAH
- 【工具推荐】ELMAH——可插拔错误日志工具
- Using ELMAH in Windows Azure with Table Storage
- PHP学习笔记之数组操作//待完善V1.0
- WebServices
- iOS SDK:预览和打开文件
- VCC、VDD、VEE、VSS的区别
- 删除配置文件 Xcode->Code Signing->Provisioning Profile
- Elmah使用总结
- qt在win8 win10不能拖拽文件到程序的问题
- Java Map 按key排序和按Value排序
- 5个强大的Java分布式缓存框架推荐
- 人一旦迷醉于自身的软弱之中 便会一味软弱下去
- SeaJS学习(一)
- web开发功能权限控制
- 字符串和整形,浮点型之间的转换函数
- .NET 事务处理