我有一个问题,无论我做什么,我的消息字段都被截断到大约 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
有任何想法吗?