首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Log4Net -不插入sqlite的AdoNetAppender

Log4Net -不插入sqlite的AdoNetAppender
EN

Stack Overflow用户
提问于 2015-12-02 02:55:19
回答 1查看 693关注 0票数 1

我试图用sqlite文件实现一个log4net,但是当我记录某件事情时,什么都不会发生。

我的配置:

代码语言:javascript
复制
<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调试标志,并得到了以下色雷斯:

代码语言:javascript
复制
    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时,它工作得很好,我不知道会发生什么

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-02 17:50:10

我使用的是1.2.14版本,它与ADONetAppender有一个已知的问题。

所以我把评级降到了1.2.13,效果很好。

首先卸载版本1.2.14:

代码语言:javascript
复制
PM> Uninstall-Package log4net Uninstall-Package

然后安装上一个版本:

代码语言:javascript
复制
PM> Install-Package log4net -Version 2.0.3

感谢stuartd给了我答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34034095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档