【问题标题】:using log4net through stored procedures in oracle通过 oracle 中的存储过程使用 log4net
【发布时间】:2010-05-24 18:47:35
【问题描述】:

我的目标是通过存储过程使用 log4net 登录 oracle 10g。 我已经在 log4net 配置 xml 文件中进行了配置,以使用 ado.net appender 并使用存储过程在 db 中登录。 我想使用错误代码、错误消息等参数在 db 中记录异常。 请指导我如何使用 C# CODE 传递此异常对象以在 db 中写入。 我已经在 xml 中为存储过程进行了适当的配置。

谢谢。

代码如下:

      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 数据库吗?或者您是否以某种方式从 Oracle 触发器或其他东西执行 .Net 代码?您提到的存储过程令人困惑。我什至看不到您在哪里设置了 log4net 的连接字符串以与 AdoNetAppender 一起使用。

标签: c# stored-procedures oracle10g log4net


【解决方案1】:

Log4net 缓冲 SQL 命令。您可以像这样设置缓冲区:

<appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender">
    <bufferSize value="128" />
</appender>

【讨论】:

    【解决方案2】:
    【解决方案3】:

    我觉得你的配置有点不对... 试试这个

    请注意,ADO 附加程序会缓冲输入(我不知道到什么程度),但这意味着该条目不会立即出现在数据库中。

    正如 johnathon 所说,鉴于您尚未发布完整配置,我们也无法检查任何过滤器、连接字符串或存储过程设置。

    您的实际代码看起来不错。 但是我会在

    logger.Debug("");

    行,以防appender抛出没有数据的日志......

    希望这会有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      相关资源
      最近更新 更多