我们必须创建所有已更改实体的历史记录。我们为此目的定义了自定义表。我必须将这些表合并到Enterprise库日志记录块中,并在这些表中进行登录。我需要编写一个SP来为这些表插入值。
到目前为止,我从google获得的是我必须创建一个继承自CustomTraceListener的侦听器并提供我的WriteMessage实现。
我需要知道的是,我将如何在Enterprise库日志记录块中插入表格和SP。
答案 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
类。