Database 是否可以使用log4net的ADONETAppender将输出参数传递到数据库?
我在Oracle存储过程中有一个输出参数,用于记录返回受影响的行数-如果过程成功,则应为1。请注意,我不打算使用日志记录的返回值,但其他过程也有它,并且在其他地方使用它,我希望日志记录过程不会偏离这种模式 然而,我似乎无法: 在Oracle中将输出参数设置为可选 在log4net配置中将该参数指定为输出参数类型 程序类似于:Database 是否可以使用log4net的ADONETAppender将输出参数传递到数据库?,database,oracle,logging,oracle11g,log4net,Database,Oracle,Logging,Oracle11g,Log4net,我在Oracle存储过程中有一个输出参数,用于记录返回受影响的行数-如果过程成功,则应为1。请注意,我不打算使用日志记录的返回值,但其他过程也有它,并且在其他地方使用它,我希望日志记录过程不会偏离这种模式 然而,我似乎无法: 在Oracle中将输出参数设置为可选 在log4net配置中将该参数指定为输出参数类型 程序类似于: CREATE OR REPLACE PROCEDURE USERS.LOGS_INSERT ( p_Date IN DATE DEFAULT NULL, p_Sou
CREATE OR REPLACE PROCEDURE USERS.LOGS_INSERT
(
p_Date IN DATE DEFAULT NULL,
p_Source IN VARCHAR2 DEFAULT NULL,
p_Host IN VARCHAR2 DEFAULT NULL,
p_Level IN VARCHAR2 DEFAULT NULL,
p_Message IN VARCHAR2 DEFAULT NULL,
p_Stack_Trace IN VARCHAR2 DEFAULT NULL,
p_RowsAffected OUT NUMBER
)
AS
BEGIN
INSERT INTO LOGS (LOG_DATE, LOG_SOURCE, LOG_SOURCE_HOST, LOG_LEVEL, LOG_MESSAGE, LOG_STACK_TRACE)
VALUES (p_Date, p_Source, p_Host, p_Level, p_Message, p_Stack_Trace);
p_RowsAffected := SQL%ROWCOUNT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
p_RowsAffected := 0;
WHEN TOO_MANY_ROWS THEN
p_RowsAffected := -2;
WHEN OTHERS THEN
p_RowsAffected := -1;
END;
/
.config文件包含:
<!-- language: lang-xml -->
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<param name="Threshold" value="INFO"/>
<bufferSize value="1"/>
<connectionType value="System.Data.OracleClient.OracleConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<commandType value="StoredProcedure"/>
<parameter>
<parameterName value="p_Date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value="p_Source"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{application}"/>
</layout>
</parameter>
<parameter>
<parameterName value="p_Host"/>
<dbType value="String"/>
<size value="100"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{log4net:HostName}"/>
</layout>
</parameter>
<parameter>
<parameterName value="p_Level"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level"/>
</layout>
</parameter>
<parameter>
<parameterName value="p_Message"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message"/>
</layout>
</parameter>
<parameter>
<parameterName value="p_Stack_Trace"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{stack}"/>
</layout>
</parameter>
<parameter>
<parameterName value="p_RowsAffected"/>
<dbType value="Int32"/>
</parameter>
</appender>
我遗漏了什么吗?至于OUT参数是否可选,您是正确的-您不能这样做。请注意,必须将变量传递给OUT参数。还要注意的是。分享和享受。我看到了这一点,并将其归类为我在甲骨文中的众多限制,而我在M$SQL Server中没有这些限制。鉴于此限制,上面列出的log4net配置是否应与上面定义的过程一起工作?我不应该以某种方式指定它是log4net的输出参数吗?