Log4Net-sqlite的AdoNetAppender未插入
本文关键字:插入 AdoNetAppender Log4Net-sqlite | 更新日期: 2023-09-27 18:25:14
我试图用sqlitedb文件实现一个log4net,但当我记录一些东西时,什么也没发生。
我的配置:
<log4net>
<appender name="sqlite-appender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" />
<connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite" />
<connectionString name = "DbConn" value="Data Source=C:[FilePath]'DebugLog.db;Synchronous=Off " />
<commandText value="INSERT INTO debug (Date, Level, Logger, Message) VALUES (@Date, @Level, @Logger, @Message)" />
<immediateFlush value="true" />
<parameter>
<parameterName value="@Date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@Level" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@Logger" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@Message" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="sqlite-appender" />
</root>
</log4net>
我在配置文件中设置了true的调试标志,得到了这个thrace:
log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database
System.ArgumentOutOfRangeException: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.
Nombre del parámetro: index
en System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
en System.Data.SQLite.SQLiteParameterCollection.GetParameter(Int32 index)
en System.Data.SQLite.SQLiteParameterCollection.GetParameter(String parameterName)
en System.Data.Common.DbParameterCollection.System.Data.IDataParameterCollection.get_Item(String parameterName)
en log4net.Appender.AdoNetAppenderParameter.FormatValue(IDbCommand command, LoggingEvent loggingEvent)
en log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)
en log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events)
System.ArgumentOutOfRangeException: El índice estaba fuera del intervalo. Debe ser un valor no negativo e inferior al tamaño de la colección.
Nombre del parámetro: index
en System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
en System.Data.SQLite.SQLiteParameterCollection.GetParameter(Int32 index)
en System.Data.SQLite.SQLiteParameterCollection.GetParameter(String parameterName)
en System.Data.Common.DbParameterCollection.System.Data.IDataParameterCollection.get_Item(String parameterName)
en log4net.Appender.AdoNetAppenderParameter.FormatValue(IDbCommand command, LoggingEvent loggingEvent)
en log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)
en log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events)
当我使用FileAppender时,它运行良好,我不知道会发生什么
我使用的是1.2.14版本,该版本的ADONetAppender存在已知问题。
所以我只是降级到1.2.13,它运行良好。
首先卸载1.2.14:版本
PM> Uninstall-Package log4net Uninstall-Package
然后安装以前的版本:
PM> Install-Package log4net -Version 2.0.3
感谢斯图亚特给了我答案。