log4net adonetappender写入数据库时​​出现异常MySql.Data.MySqlClient.MySqlException:列的数据太长

时间:2015-05-26 10:46:49

标签: log4net log4net-configuration log4net-appender log4net-filter

我在我的.net应用程序中为某些参数配置了adonetappender,我在数据库中有一个固定长度的列,但是我的日志记录数据长度超出了。从log4net跟踪日志中我发现错误为

log4net:ERROR [AdoNetAppender] ErrorCode: GenericFailure. Exception while writing to database
MySql.Data.MySqlClient.MySqlException: Data too long for column 'action' at row 1
   at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
   at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
   at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId)
   at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
   at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
   at log4net.Appender.AdoNetAppender.SendBuffer(IDbTransaction dbTran, LoggingEvent[] events)
   at log4net.Appender.AdoNetAppender.SendBuffer(LoggingEvent[] events)
log4net: Shutdown called on Hierarchy [log4net-default-repository]
我的log4net配置中的

参数如下

  <parameter>
      <parameterName value="action" />
      <dbType value="String" />
      <size value="45" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%5c{1}.%M" />
      </layout>
    </parameter>

我知道我可以在配置中处理最大长度吗?

1 个答案:

答案 0 :(得分:0)

我建议增加列长度,因为你会丢失日志。

如果您希望日志的大小固定,那么您的设置应该有效。 或者将其设置为“-1”或完全删除size属性,这样现在它将取决于表列的长度。

此外,如果您使用存储过程,我意识到您缺少“@”

<parameter>
  <parameterName value="@action" />
  <dbType value="String" />
  <size value="-1" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%5c{1}.%M" />
  </layout>
</parameter>