C# 使用log4net登录到Oracle数据库不会';不要立即更新数据库
我正在我的web应用程序中测试log4netC# 使用log4net登录到Oracle数据库不会';不要立即更新数据库,c#,oracle,oracle11g,log4net,C#,Oracle,Oracle11g,Log4net,我正在我的web应用程序中测试log4net我正在将错误记录到Oracle 11g数据库中的文件和表中 然而,当我登录到数据库时,我注意到了一些奇怪的行为 例如,我启动应用程序并生成一个错误 我可以看到登录到文件中的条目 我在数据库的表中没有看到条目 然后关闭应用程序并重新启动它。 就在这时,我在oracle表中看到了前面的错误 我将根节点设置为: <root> <level value="ALL"/> <appender-ref ref="LogFil
我正在将错误记录到Oracle 11g数据库中的文件和表中 然而,当我登录到数据库时,我注意到了一些奇怪的行为 例如,我启动应用程序并生成一个错误
- 我可以看到登录到文件中的条目
- 我在数据库的表中没有看到条目
就在这时,我在oracle表中看到了前面的错误 我将根节点设置为:
<root>
<level value="ALL"/>
<appender-ref ref="LogFileAppender" />
<appender-ref ref="AdoNetAppender_Oracle"/>
</root>
Appender非常基本,就像我在网上找到的任何示例一样
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>
我很肯定您在appender中的缓冲区大小有问题。在ado appender中应该有一行
缓冲区大小是在写入表之前发生的错误数。若要查看实时错误,请将x更改为1。您是否可以发布附加器本身。您当前设置为128,因此在缓冲区中存储128个错误之前,您不会在db中看到错误。然后,它会写入db(或者,如果您关闭并重新打开,它将写入)。就是这样。谢谢你。很高兴能帮忙。查看本教程,了解log4net的精彩介绍。