Microsoft企业库无法通过ODBC写入日志
本文关键字:ODBC 日志 企业库 Microsoft | 更新日期: 2023-09-27 18:22:17
在我的应用程序中,MEL设置为使用基于GenericDatabase(ODBC)的数据库侦听器,如下所示:
GenericDatabase db = new GenericDatabase(_connectionString, OdbcFactory.Instance);
TraceListener traceListener = new FormattedDatabaseTraceListener(db, _writeLogStoredProcName, _addCategoryStoredProcName, _formatter);
ODBC已设置为连接到SQL Server驱动程序。"WriteLog"存储过程如下所示:
ALTER 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
)
AS
INSERT INTO [LOG] (
EVENTID,
PRIORITY,
SEVERITY,
TITLE,
[TIMESTAMP],
MACHINENAME,
APPDOMAINNAME,
PROCESSID,
PROCESSNAME,
THREADNAME,
WIN32THREADID,
MESSAGE,
FORMATTEDMESSAGE
)
VALUES (
@EventId,
@Priority,
@Severity,
@Title,
@Timestamp,
@MachineName,
@AppDomainName,
@ProcessID,
@ProcessName,
@ThreadName,
@Win32ThreadId,
@Message,
@FormattedMessage)
SET @LogID = @@IDENTITY
RETURN @LogID
当我执行以下代码时,我得到一个错误:
LogEntry logEntry = new LogEntry();
logEntry.Message = "Test Message";
logEntry.Priority = 1;
logEntry.Categories.Add("Error");
LogWriter logWriter = GetLogger();
// ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Procedure or function 'WriteLog' expects parameter '@EventID', which was not supplied.
logWriter.Write(logEntry);
由于某些原因,参数没有传递到我的存储过程中,我通过SQL Server探查器对其进行了验证。当SP被执行时,探查器只显示以下内容:
WriteLog
我还试图更改SP参数的标题,使其具有各种命名,如:@eventid、@eventid、@eventid、@eventid,但都没有成功。
问题出在哪里?
我没有找到任何关于我的问题的信息,所以我最终用Blackjack和hookers创建了自己的自定义日志库。