Welcome

首页 / 软件开发 / .NET编程技术 / Enterprise Library Step By Step系列(十二)异常处理应用程序块 - 进阶篇

Enterprise Library Step By Step系列(十二)异常处理应用程序块 - 进阶篇2011-01-28 cnblogs terrylee一.把异常信息Logging到数据库

在日志和监测应用程序块中,有朋友提意见说希望能够把异常信息Logging到数据库中,在这里介绍一下具体的实现方法。

1.创建相关的数据库环境:

我们可以用日志和监测应用程序块自带的SQL语句来创建相关的数据库环境:

创建数据库:

CREATE DATABASE [Logging] ON (NAME = N"Logging", FILENAME = N"C:Program FilesMicrosoft SQL ServerMSSQLdataLogging.mdf" , SIZE = 1, FILEGROWTH = 10%) LOG ON (NAME = N"Logging_log", FILENAME = N"C:Program FilesMicrosoft SQL ServerMSSQLdataLogging_log.LDF" , FILEGROWTH = 10%)

创建表:

CREATE TABLE [dbo].[Log] (
[LogID] [int] IDENTITY (1, 1) NOT NULl ,
[EventID] [int] NULl ,
[Category] [nvarchar] (64) COLLATE SQl _Latin1_General _CP1_CI_AS NOT NULl ,
[Priority] [int] NOT NULl ,
[Severity] [nvarchar] (32) COLLATE SQl _Latin1_General _CP1_CI_AS NOT NULl ,
[Title] [nvarchar] (256) COLLATE SQl _Latin1_General _CP1_CI_AS NOT NULl ,
[Timestamp] [datetime] NOT NULl ,
[MachineName] [nvarchar] (32) COLLATE SQl _Latin1_General _CP1_CI_AS NOT NULl ,
[AppDomainName] [nvarchar] (2048) COLLATE SQl _Latin1_General _CP1_CI_AS NOT NULl ,
[ProcessID] [nvarchar] (256) COLLATE SQl _Latin1_General _CP1_CI_AS NOT NULl ,
[ProcessName] [nvarchar] (2048) COLLATE SQl _Latin1_General _CP1_CI_AS NOT NULl ,
[ThreadName] [nvarchar] (2048) COLLATE SQl _Latin1_General _CP1_CI_AS NULl ,
[Win32ThreadId] [nvarchar] (128) COLLATE SQl _Latin1_General _CP1_CI_AS NULl ,
[Message] [nvarchar] (2048) COLLATE SQl _Latin1_General _CP1_CI_AS NULl ,
[FormattedMessage] [ntext] COLLATE SQl _Latin1_General _CP1_CI_AS NULl
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

创建存储过程:

1CREATE PROCEDURE WriteLog
2(
3 @EventID int,
4 @Category nvarchar(64),
5 @Priority int,
6 @Severity nvarchar(32),
7 @Title nvarchar(256),
8 @Timestamp datetime,
9 @MachineName nvarchar(32),
10 @AppDomainName nvarchar(2048),
11 @ProcessID nvarchar(256),
12 @ProcessName nvarchar(2048),
13 @ThreadName nvarchar(2048),
14 @Win32ThreadId nvarchar(128),
15 @Message nvarchar(2048),
16 @FormattedMessage ntext
17)
18AS
19
20 INSERT INTO [Log] (
21 EventID,
22 Category,
23 Priority,
24 Severity,
25 Title,
26 [Timestamp],
27 MachineName,
28 AppDomainName,
29 ProcessID,
30 ProcessName,
31 ThreadName,
32 Win32ThreadId,
33 Message,
34 FormattedMessage
35 )
36 VALUES (
37 @EventID,
38 @Category,
39 @Priority,
40 @Severity,
41 @Title,
42 @Timestamp,
43 @MachineName,
44 @AppDomainName,
45 @ProcessID,
46 @ProcessName,
47 @ThreadName,
48 @Win32ThreadId,
49 @Message,
50 @FormattedMessage)
51GO

该SQL语句默认的路径为C:Program FilesMicrosoft Enterprise LibrarysrcLoggingSinksDatabaseScripts,直接运行CreateLoggingDatabase.cmd即可。