3

我有一个问题,无论我做什么,我的消息字段都被截断到大约 42k。

这是一个简短的片段来说明我的配置:

<log4net>
    <appender name="DbLogs" type="log4net.Appender.AdoNetAppender">
      <connectionType value="..." />
      <bufferSize value="0"/>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
      <connectionString value="Data Source=..." />
      <commandText value="INSERT INTO Logs ([Date],[Thread],[Level],[Logger],[Line],[Location],[Type],[Message],[Exception], [Username], [Guid]) VALUES (@log_date, @thread, @log_level, @logger, @line, @location, @type, @message, @exception, @current_username, @current_guid)" />
      <parameter>
        ...
      </parameter>
      ...
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="-1" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message" />
        </layout>
      </parameter>
      ...
    </appender>
    <root>
      <level value="INFO" />
      <appender-ref ref="DbLogs" />
    </root>
  </log4net>

对于消息参数,我尝试了大小值“-1”、“9999999”,这完全没有区别,它始终只存储 42k。0 正确地引发异常。

我还尝试完全删除 size 元素,但这是通过异常处理的。

对于 dbType,我也尝试过 AnsiString,但没有运气。

Logs 表中的消息字段定义为 varchar(MAX)

Message varchar(MAX)

数据库:SQL Server 2012 Log4net:1.2.11 .net 框架:4.0

有任何想法吗?

4

0 回答 0