一千萬個為什麽

搜索

使用企業庫4.1進行自定義DB日誌記錄

我們必須創建所有已更改實體的歷史日誌。我們為此目的定義了自定義表。我必須將這些表合並到企業庫日誌記錄塊中,並在這些表中進行登錄。我需要編寫一個SP來為這些表插入值。

直到現在,我從谷歌得到的是我必須創建一個繼承自CustomTraceListener的偵聽器並給出我的WriteMessage實現。

我需要知道的是,我將如何在Enterprise庫日誌記錄塊中插入表格和SP。

最佳答案

如果您的存儲過程將使用以下界面:

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
)


Then you can use the Database Trace Listener out of the box. Just point to your stored procedure via configuration.

如果沒有,那麽你將不得不做一些編碼。您可以創建自定義跟蹤偵聽器,但最簡單的方法可能是復制 FormattedDatabaseTraceListener </代碼> 並修改。 (核心實現是私有的,因此延伸不會讓你一路走來。)他們已經完成了大部分工作。唯一的變化是修改 ExecuteWriteLogStoredProcedure 以執行調用存儲過程所需的操作。您還需要基於 FormattedDatabaseTraceListenerData 創建一個TraceListenerData類,添加您需要的特定配置項。

安裝Enterprise Library源代碼並查看 FormattedDatabaseTraceListener 類。

轉載註明原文: 使用企業庫4.1進行自定義DB日誌記錄