Can we call stored procedures as well? I'm trying and it's not working for me:
Code: Select all
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<log4net debug="true">
<logger name="Program">
<level value="DEBUG"/>
</logger>
<root>
<level value="ALL"/>
<appender-ref ref="AdoNetAppender_Oracle"/>
</root>
<appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender">
<connectionType value="Devart.Data.Oracle.OracleConnection, Devart.Data.Oracle, Version=8.4.225.0, Culture=neutral, PublicKeyToken=09af7300eec23701"/>
<connectionString value="data source=mydb;User ID=myuser;Password=mypass;persist security info=false;"/>
<commandText value="MYUSER.PROC_TEST"/>
<commandType value="StoredProcedure"/>
<reconnectOnError value="true"/>
<bufferSize value="1"/>
<parameter>
<parameterName value="out_param1"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout">
<conversionPattern value="%property{log4net:out_param1}"/>
</layout>
</parameter>
<parameter>
<parameterName value="in_param1"/>
<dbType value="String"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{log4net:in_param1}"/>
</layout>
</parameter>
<parameter>
<parameterName value="in_param2"/>
<dbType value="Decimal"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{log4net:in_param2}"/>
</layout>
</parameter>
</appender>
</log4net>
</configuration>
Here's what I'm calling in Main:
Code: Select all
using System;
using log4net;
using log4net.Config;
namespace ConsoleApplication1
{
class Program
{
public static readonly ILog log = LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
XmlConfigurator.Configure();
String outValue;
//set your values
GlobalContext.Properties["out_param1"] = ""; //initialized to something to prevent blowup
GlobalContext.Properties["in_param1"] = "some message";
GlobalContext.Properties["in_param2"] = 2;
log.Info(""); //call the proc
outValue = GlobalContext.Properties["out_param1"] == DBNull.Value ? null : GlobalContext.Properties["out_param1"].ToString();
}
}
}
I'm getting an error:
log4net: Created Appender [AdoNetAppender_Oracle]
log4net: Adding appender named [AdoNetAppender_Oracle] to logger [root].
log4net: Hierarchy Threshold []
log4net:
ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database
Devart.Data.Oracle.OracleException (0x80004005): OCI-22062: invalid input string [(null)]
at Devart.Data.Oracle.a3.c(Int32 A_0)
at Devart.Data.Oracle.OracleNumber.Parse(String value, String format)
at Devart.Data.Oracle.OracleNumber.Parse(String value)
at Devart.Data.Oracle.OracleParameter.a(OracleDbType A_0, Object A_1, Object A_2, Byte[] A_3, Hashtable A_4, Int32 A_
5, Int32 A_6, Int32 A_7, Int32 A_8, Int32 A_9, Boolean A_10, OracleConnection A_11, ParameterDirection A_12, OracleType
A_13, q A_14, Boolean& A_15)
at Devart.Data.Oracle.OracleParameter.a(bt& A_0, Boolean A_1, OracleConnection A_2, Byte[] A_3, Hashtable A_4, q A_5,
Boolean& A_6, Int32 A_7)
at Devart.Data.Oracle.OracleCommand.a(am A_0, Int32 A_1, OracleParameterCollection A_2, q A_3, Boolean& A_4)
at Devart.Data.Oracle.OracleCommand.InternalExecute(CommandBehavior behavior, IDisposable disposable, Int32 startReco
rd, Int32 maxRecords, Boolean nonQuery)
at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery)
at Devart.Data.Oracle.OracleCommand.ExecuteNonQuery()
at log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)
at log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events)
log4net: Shutdown called on Hierarchy [log4net-default-repository]
**EDIT: I've fixed this and will provide the answer in a reply below.**