简体   繁体   English

Log4Net-SQLite的AdoNetAppender不插入

[英]Log4Net - AdoNetAppender for sqlite not inserting

I'm trying to implement a log4net with a sqlite db file, but when I log something nothing happens. 我正在尝试使用sqlite db文件实现log4net,但是当我记录日志时,什么也没发生。

My configuration: 我的配置:

<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>

I put on true the debug flag in the config file and I get this thrace: 我把配置文件中的调试标志置为true,然后得到这个色域:

    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)

When I use FileAppender it works fine I dont know what happens 当我使用FileAppender时,它工作正常,我不知道会发生什么

I was using 1.2.14 version that has a known issue with the ADONetAppender. 我使用的是ADONetAppender的已知问题的1.2.14版本。

So I just downgrade to 1.2.13 and it works fine. 所以我只是降级到1.2.13,它工作正常。

First uninstall the version 1.2.14: 首先卸载版本1.2.14:

PM> Uninstall-Package log4net Uninstall-Package

Then install the previous version: 然后安装以前的版本:

PM> Install-Package log4net -Version 2.0.3

Thanks to stuartd who give me the answer. 感谢stuartd给我答案。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM