为什么log4Net没有登录到Oracle 11g?

OhD*_*ear 0 log4net oracle11g log4net-configuration

我正在使用OracleAppender在Oracle 11g表中记录消息.但它没有记录任何东西.我也使用EventLogAppender和RollingFileAppender工作正常并记录消息.但OracleAppender无法运行.Oracle appender的log4Net配置部分如下所示:

  <connectionType value="Oracle.DataAccess.Client.OracleConnection, Oracle.DataAccess, Version=4.113.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
  <connectionString value="DATA SOURCE= servername:portname/DBNAME; USER ID= user-id; PASSWORD= password;" />  
  <!--Below is the hardcoded insert for testing purpose-->
  <commandText value="Insert into MSG_LOG  (LOG_ID, COMPONENT_NAME, LOG_DETAILS, LOG_PARAMETER_LIST, LOG_TYPE, REQUEST_ID, QUEUE_ID, OTHER_ID, LOG_USER_ID, LOG_DATE)
                         VALUES (335, '', '', '', 'test', '','', '', 'test', NULL)" />
Run Code Online (Sandbox Code Playgroud)

我现在已经挣扎了很长一段时间了,所以想到要问.您是否能够看到任何我可能无视的明显问题?

非常感谢.

Pet*_*ter 5

您应该启用内部lo​​g4net日志记录以查看错误,从FAQ启用log4net日志记录:

在log4net中有两种不同的方法可以启用内部调试.这些列在下面.首选方法是在应用程序的配置文件中指定log4net.Internal.Debug选项.

•也可以通过在应用程序的配置文件中设置值来启用内部调试(不是log4net配置文件,除非log4net配置数据嵌入在应用程序的配置文件中).必须将log4net.Internal.Debug应用程序设置设置为值true.例如:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

启动时立即读取此设置,将导致发出所有内部调试消息.

•要以编程方式启用log4net的内部调试,需要将log4net.Util.LogLog.InternalDebugging属性设置为true.显然,设置越快,将产生越多的调试.

内部调试消息将写入控制台和System.Diagnostics.Trace系统.如果应用程序没有控制台,则其中记录的消息将丢失.请注意,应用程序可以通过设置System.Console.Out来重定向控制台流.Trace系统默认将消息发送到附加的调试器(消息将出现在输出窗口中).如果进程没有附加调试器,则将消息发送到系统调试器.可以使用来自http://www.sysinternals.com的 DebugView之类的实用程序来捕获这些消息.

当log4net内部调试消息写入System.Diagnostics.Trace系统时,可以将这些消息重定向到本地文件.您可以通过将以下内容添加到应用程序的.config文件来定义跟踪侦听器:

<configuration>
    ...

    <system.diagnostics>
        <trace autoflush="true">
            <listeners>
                <add 
                    name="textWriterTraceListener" 
                    type="System.Diagnostics.TextWriterTraceListener" 
                    initializeData="C:\tmp\log4net.txt" />
            </listeners>
        </trace>
    </system.diagnostics>

    ...
</configuration>
Run Code Online (Sandbox Code Playgroud)

确保运行应用程序的进程有权写入此文件.