.net log4net AdoNetAppender缺少默认参数

.net log4net AdoNetAppender缺少默认参数,.net,log4net,.net,Log4net,尝试将log4net AdoNetAppender与示例/默认配置一起使用时,我遇到了一个奇怪的参数错误 log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database System.IndexOutOfRangeException: An SqlParameter with ParameterName '@log_date' is not contained by thi

尝试将log4net AdoNetAppender与示例/默认配置一起使用时,我遇到了一个奇怪的参数错误

log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database
System.IndexOutOfRangeException: An SqlParameter with ParameterName '@log_date' is not contained by this SqlParameterCollection.
我看不出参数声明有任何错误

<parameter>
    <parameterName value="@log_date"/>
    <dbType value="DateTime" />
    <layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
对于每个参数,我真的不知道发生了什么

下面是我对log4net的完整配置

<log4net>
  <root>
    <level value="ALL" />
    <appender-ref ref="DBAppender" />
    <appender-ref ref="RollingFileAppender" />
    <appender-ref ref="DebugAppender" />
  </root>

  <appender name="DBAppender" type="log4net.Appender.AdoNetAppender">
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    <connectionStringName value="CustomerDB" />
    <bufferSize value="1" />
    <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" />
    <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>
  </appender>

  <appender name="DebugAppender" type="log4net.Appender.DebugAppender">
    <immediateFlush value="true" />
    <layout type="log4net.Layout.SimpleLayout" />
  </appender>
</log4net>


您需要更新到log4net 2.0.5,2.0.4 AdoNetAppenderis已损坏。

什么版本-请参阅2.0.4,下一步我要尝试的是更新,不幸的是,NuGet的一个下载地址目前在办公室被阻止,因此我必须稍后再试
<log4net>
  <root>
    <level value="ALL" />
    <appender-ref ref="DBAppender" />
    <appender-ref ref="RollingFileAppender" />
    <appender-ref ref="DebugAppender" />
  </root>

  <appender name="DBAppender" type="log4net.Appender.AdoNetAppender">
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    <connectionStringName value="CustomerDB" />
    <bufferSize value="1" />
    <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message]) VALUES (@log_date, @thread, @log_level, @logger, @message)" />
    <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>
  </appender>

  <appender name="DebugAppender" type="log4net.Appender.DebugAppender">
    <immediateFlush value="true" />
    <layout type="log4net.Layout.SimpleLayout" />
  </appender>
</log4net>