使用 log4net 记录到 Oracle 数据库不会立即更新数据库
本文关键字:数据库 更新 使用 记录 Oracle log4net | 更新日期: 2023-09-27 18:35:45
我正在我的Web应用程序中测试log4net。
我正在将错误记录到 Oracle 11g 数据库中的文件和表中。
但是,当我登录到数据库时,我注意到了特殊的行为。
例如,我启动应用程序并生成错误。
- 我可以看到记录到文件中的条目。
- 我在数据库中的表中看不到该条目。
然后我关闭应用程序并重新启动它。
在这一点上,我在预言机表中看到了以前的错误。
我将根节点设置为:
<root>
<level value="ALL"/>
<appender-ref ref="LogFileAppender" />
<appender-ref ref="AdoNetAppender_Oracle"/>
</root>
附加器非常基本,就像我在网上找到的任何示例一样。
Oracle Appender:
<appender name="AdoNetAppender_Oracle" type="log4net.Appender.AdoNetAppender">
<connectionType value="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
<connectionString value="my stuff"/>
<commandText value="INSERT INTO MY_TABLE (Datetime,Thread,Log_Level,Logger,Message,STACK_TRACE) VALUES (:log_date, :thread, :log_level, :logger, :message, :stackTrace)"/>
<bufferSize value="128"/>
<parameter>
<parameterName value=":log_date"/>
<dbType value="DateTime"/>
<layout type="log4net.Layout.RawTimeStampLayout"/>
</parameter>
<parameter>
<parameterName value=":thread"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread"/>
</layout>
</parameter>
<parameter>
<parameterName value=":log_level"/>
<dbType value="String"/>
<size value="50"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level"/>
</layout>
</parameter>
<parameter>
<parameterName value=":logger"/>
<dbType value="String"/>
<size value="255"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger"/>
</layout>
</parameter>
<parameter>
<parameterName value=":message"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message"/>
</layout>
</parameter>
<parameter>
<parameterName value=":stackTrace"/>
<dbType value="String"/>
<size value="4000"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{StackTrace}"/>
</layout>
</parameter>
</appender>
我很肯定您在追加器中的缓冲区大小有问题。在您的 ado 追加器中,应该有一行<bufferSize value ="x" />
缓冲区大小是在写入表之前发生的错误数。要查看实时错误,请将 x 更改为 1。