log4net AdoNetAppender - SqlParameterCollection不包含参数。

9
在我的一个项目中,我遇到了这个错误:
System.IndexOutOfRangeException: SqlParameterCollection does not contain SqlParameter with ParameterName "@log_date".
в System.Data.SqlClient.SqlParameterCollection.GetParameter(String parameterName)
в System.Data.Common.DbParameterCollection.System.Data.IDataParameterCollection.get_Item(String parameterName)
в log4net.Appender.AdoNetAppenderParameter.FormatValue(IDbCommand command, LoggingEvent loggingEvent)
в log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)
в log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events)

这里是追加器配置(在其他项目中完美运行):

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
        <bufferSize value="1" />
        <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <connectionString value="Data Source=*****;Initial Catalog=****;Integrated Security=SSPI" />
        <commandText value="INSERT INTO [LogsDB].[dbo].[Logs] ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
        <parameter>
            <parameterName value="@log_date" />
            <dbType value="DateTime" />
            <layout type="log4net.Layout.RawTimeStampLayout" />
        </parameter>
        .
        .
        .
        <parameter>
            <parameterName value="@exception" />
            <dbType value="String" />
            <size value="2000" />
            <layout type="log4net.Layout.ExceptionLayout" />
        </parameter>
    </appender>

如果有人遇到了这个问题,我会非常感谢你的帮助。

1
你刚升级到1.2.14版了吗?因为似乎存在一个问题。详情请查看链接:https://issues.apache.org/jira/browse/LOG4NET-489 - stuartd
@stuartd 我刚刚重现了这个问题。所有其他的appender似乎都正常工作。 - Ernesto
真的...在这个新项目中,我有最新版本的log4net。 - Oksana Shamsiieva
尝试降级后,将在此处发布结果。 - Oksana Shamsiieva
看起来这个问题在2.0.5版本中已经解决了。 - mdickin
2个回答

12

安装Log4net包 - 版本2.0.3

对我有用(遇到相同问题)


2
将其降级为2.0.3暂时解决了问题。 - Win
可以用。谢谢。 - Aleksei
也为我排序了...谢谢 - Dave Lawrence
现在不需要降级了 - 版本2.0.5修复了问题,只是不要使用2.0.4!! - Rob Sedgwick

-1
解决了。将Log4Net升级到2.04!然后运行上面提供的命令!虽然不知道自己在做什么,但现在可以将日志记录到数据库中了!

2
如果你指的是命令 Install-Package Log4net -Version 2.0.3,那么你刚刚降级到了2.0.3版本。你可以在这里阅读有关该错误的信息。 - SebastianC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接