Если ваша хранимая процедура будет работать со следующим интерфейсом:
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
)
Затем вы можете использовать слушатель трассировки базы данных из коробки. Просто укажите вашу хранимую процедуру через конфигурацию.
Если нет, то вам придется заняться кодированием. Вы можете создать пользовательский прослушиватель трассировки , но самый простой способ - скопировать FormattedDatabaseTraceListener
и изменить его. (Основная реализация является частной, поэтому расширение не поможет вам в этом.) Они уже сделали большую часть работы. Единственным изменением будет изменение ExecuteWriteLogStoredProcedure
для выполнения того, что вам нужно для вызова вашей хранимой процедуры. Вы также хотели бы создать класс TraceListenerData на основе FormattedDatabaseTraceListenerData
, добавив в него нужные вам элементы конфигурации.
Установите исходный код Enterprise Library и взгляните на класс FormattedDatabaseTraceListener
.