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)
我现在已经挣扎了很长一段时间了,所以想到要问.您是否能够看到任何我可能无视的明显问题?
非常感谢.
您应该启用内部log4net日志记录以查看错误,从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)
确保运行应用程序的进程有权写入此文件.