我使用Dropwizard和Jersey。我创建了一个新的LoggingFeature
来记录请求/响应对。 instantiates the LoggingFeature
的代码是:
environment.jersey().register(new LoggingFeature(
kivasLogger, Level.INFO, LoggingFeature.Verbosity.PAYLOAD_TEXT,
null));
不幸的是,我的有效负载很大,而且正在记录的是...more...
,这是我的要求所不能接受的。我需要记录任何大小的有效负载。我可以将上述null
maxEntitySize
替换为Integer.MAX_VALUE
,还是不允许最大实体大小超过内部阈值?
感谢。
答案 0 :(得分:1)
经过一番挖掘,我找到了我的解决方案,并认为我会在这里发帖与其他遇到此问题的人分享。
我发现LoggingFeature
类在内部使用DEFAULT_MAX_ENTITY_SIZE
值作为maxEntitySize
构造函数参数的默认值。如果参数未在构造函数中设置,则设置此默认值,这不是我上面的问题。在current implementation of LoggingFeature
中,DEFAULT_MAX_ENTITY_SIZE
的值为8192. maxEntitySize
参数可以使用大于DEFAULT_MAX_ENTITY_SIZE
的值成功覆盖。我目前使用的maxEntitySize
值1024 * 1024
没有任何问题,...more...
附件已不再存在。
但请注意,如果不引发Integer.MAX_VALUE
(发生在我身上),我上面提到的NegativeArraySizeException
等极大值可能无法使用。
所以基本上,将上面有问题的代码行改为:
environment.jersey().register(new LoggingFeature(
kivasLogger, Level.INFO, LoggingFeature.Verbosity.PAYLOAD_TEXT,
1024 * 1024));
为我工作,但有过大值的行如:
environment.jersey().register(new LoggingFeature(
kivasLogger, Level.INFO, LoggingFeature.Verbosity.PAYLOAD_TEXT,
Integer.MAX_VALUE));
对我不起作用。