使用企业库4.1进行自定义DB日志记录

时间:2010-04-15 04:34:42

标签: enterprise-library

我们必须创建所有已更改实体的历史记录。我们为此目的定义了自定义表。我必须将这些表合并到Enterprise库日志记录块中,并在这些表中进行登录。我需要编写一个SP来为这些表插入值。

到目前为止,我从google获得的是我必须创建一个继承自CustomTraceListener的侦听器并提供我的WriteMessage实现。

我需要知道的是,我将如何在Enterprise库日志记录块中插入表格和SP。

1 个答案:

答案 0 :(得分:3)

如果您的存储过程可以使用以下界面:

CREATE PROCEDURE [dbo].[WriteLog]
(
    @EventID int, 
    @Priority int, 
    @Severity nvarchar(32), 
    @Title nvarchar(256), 
    @Timestamp datetime,
    @MachineName nvarchar(32), 
    @AppDomainName nvarchar(512),
    @ProcessID nvarchar(256),
    @ProcessName nvarchar(512),
    @ThreadName nvarchar(512),
    @Win32ThreadId nvarchar(128),
    @Message nvarchar(1500),
    @FormattedMessage ntext,
    @LogId int OUTPUT
)


然后,您可以使用开箱即用的数据库跟踪侦听器。只需通过配置指向您的存储过程。

如果没有,那么你将不得不做一些编码。您可以create a Custom Trace Listener,但最简单的方法可能是复制FormattedDatabaseTraceListener并进行修改。 (核心实现是私有的,因此扩展并不能让你一路走来。)他们已经完成了大部分工作。唯一的变化是修改ExecuteWriteLogStoredProcedure以执行调用存储过程所需的操作。您还需要基于FormattedDatabaseTraceListenerData创建一个TraceListenerData类,添加您需要的特定配置项。

安装Enterprise Library源代码并查看FormattedDatabaseTraceListener类。