使用Log4Net AdoNetAppender记录大型消息

使用Log4Net AdoNetAppender记录大型消息,log4net,log4net-appender,Log4net,Log4net Appender,我有一个库,它有几个web服务调用。现在需要记录向外部web服务发出的所有请求,并记录收到的所有响应。这是为了以后的内部审计 我的sql表如下所示 创建表[dbo]。[WebServiceLog]( [Id][int]标识(1,1)不为空, [日期][日期时间]不为空, [Thread][nvarchar](255)不为空, [级别][nvarchar](50)不为空, [Logger][nvarchar](255)不为空, [Message][ntext]不为空, [SessionID][nv

我有一个库,它有几个web服务调用。现在需要记录向外部web服务发出的所有请求,并记录收到的所有响应。这是为了以后的内部审计

我的sql表如下所示

创建表[dbo]。[WebServiceLog](
[Id][int]标识(1,1)不为空,
[日期][日期时间]不为空,
[Thread][nvarchar](255)不为空,
[级别][nvarchar](50)不为空,
[Logger][nvarchar](255)不为空,
[Message][ntext]不为空,
[SessionID][nvarchar](50)不为空,
[SearchID][nvarchar](25)空
)
请注意,消息字段是存储来自web服务的请求和响应的位置。响应有时非常大,超过90k个字符,有时甚至更多。(航班/酒店可用性搜索-可能返回大量数据)

我的appender配置如下


有没有办法告诉追加者我的字段是
nText
,可以提供任意数量的数据?我确实尝试过用string为字段长度设置一个非常高的值,但它似乎总是在值454751处截断。

有人遇到过这个问题吗?还是有更好的方法使用log4net将大型消息记录到数据库中?任何帮助都将不胜感激

这可能无法正确回答您的问题,但是如果您使用
nvarchar(max)
而不是
nText
,那么这对您来说应该很好:



这就是我用来记录异常(使用堆栈跟踪)的方法。将其设置为-1也应该像Dmitry建议的那样起作用。

您尝试过将大小设置为-1吗?此外,454751似乎是一个大数字(40万?)。在将数据插入数据库之前,最好先压缩数据。我没有成功地将大小设置为-1。当我这样做时,日志消息无法显示在数据库中(可能是由于内部错误)。设置为-1对我不起作用。我的邮件被截断为42kChanging to nvarchar(max)对我不起作用。然而,大小=-1就像一个魅力。(使用sql server 2012后端)
ntext
nvarchar(max)
是同义词。更改列类型将无效。这个答案之所以有效,是因为它没有指定大小,而不是因为
nvarchar(max)
这些答案仍然有效吗?我尝试了无大小节点,大小值=-1,但我的列仍被截断。我不知道这是否仍然有效,但我当时建议的配置对我有效。显然,并不是每个人都有这样的经历。