Моя цель состоит в том, чтобы войти оракула 10g, используя log4net через хранимые процедуры. Я создал конфигурацию в файле конфигурации log4net для использования ado.net appender и использовал хранимую процедуру для входа в db. Я хочу войти исключения в БД с параметрами, как код ошибки, сообщение об ошибке и т.д. Пожалуйста, наставит меня, как передать этот объект Exception с помощью C# код для записи в БД. Я сделал правильные конфигурации в xml для хранимых процедур.с помощью log4net с помощью хранимых процедур в оракула
Спасибо.
код выглядит следующим образом:
string logFilePath = AppDomain.CurrentDomain.BaseDirectory + "log4netconfig.xml";
FileInfo finfo = new FileInfo(logFilePath);
log4net.Config.XmlConfigurator.ConfigureAndWatch(finfo);
ILog logger = LogManager.GetLogger("Exception.Logging");
log4net.ThreadContext.Properties["INNER_EXCEPTION"] = exception.InnerException.ToString();
log4net.ThreadContext.Properties["INNER_EXCEPTION"] = string.Empty;
log4net.ThreadContext.Properties["STACK_TRACE"] = exception.StackTrace.ToString();
log4net.ThreadContext.Properties["STACK_TRACE"] = string.Empty;
log4net.ThreadContext.Properties["MESSAGE"] = ((H2hException)exception).Message;
log4net.ThreadContext.Properties["CODE"] = "err-1010";
log4net.ThreadContext.Properties["MODULE"] = "NED.Development";
log4net.ThreadContext.Properties["COMPONENT"] = "Component";
log4net.ThreadContext.Properties["ADDITIONAL_MESSAGE"] = "msg";
logger.Debug("");
<parameter>
<parameterName value="@p_Error_Code" />
<dbType value="VARCHAR2" />
<size value="16" />
<!--<layout type="log4net.Layout.PatternLayout" value="%level" />-->
<conversionPattern value="%property{log4net:CODE}"/>
</parameter>
<parameter>
<parameterName value="@p_Error_Message" />
<dbType value="VARCHAR2" />
<size value="255" />
<!--<layout type="log4net.Layout.PatternLayout" value="%logger" />-->
<conversionPattern value="%property{log4net:MESSAGE}"/>
</parameter>
<parameter>
<parameterName value="@p_Inner_Exception" />
<dbType value="VARCHAR2" />
<size value="4000" />
<!--<layout type="log4net.Layout.PatternLayout" value="%thread" />-->
<conversionPattern value="%property{log4net:INNER_EXCEPTION}"/>
</parameter>
<parameter>
<parameterName value="@p_Module" />
<dbType value="VARCHAR2" />
<size value="225" />
<!--<layout type="log4net.Layout.PatternLayout" value="%message" />-->
<conversionPattern value="%property{log4net:MODULE}"/>
</parameter>
<parameter>
<parameterName value="@p_Component" />
<dbType value="VARCHAR2" />
<size value="225" />
<!--<layout type="log4net.Layout.ExceptionLayout" />-->
<conversionPattern value="%property{log4net:COMPONENT}"/>
</parameter>
<parameter>
<parameterName value="@p_Stack_Trace " />
<dbType value="VARCHAR2" />
<size value="4000" />
<!--<layout type="log4net.Layout.PatternLayout"/>-->
<conversionPattern value="%property{log4net:STACK_TRACE}"/>
</parameter>
<parameter>
<parameterName value=" @p_Additional_Message" />
<dbType value="VARCHAR2" />
<size value="4000" />
<!--<layout type="log4net.Layout.ExceptionLayout" />-->
<conversionPattern value="%property{log4net:ADDITIONAL_MESSAGE}"/>
</parameter>
</appender>
Пожалуйста, объясните, что «не работает» более подробно. –
Вы заходите из .Net в базу данных Oracle? Или вы каким-то образом выполняете .Net-код из триггера Oracle или что-то еще? Ваше упоминание о хранимой процедуре сбивает с толку. Я даже не вижу, где у вас установлена строка подключения для log4net для работы с AdoNetAppender. – jonathanpeppers