the*_*ses 3 java log4j2 jersey-2.0 spring-boot
由于Jersey 2.x在最新版本中弃用了LoggingFilter,我们继续使用Jersey自己的请求/响应日志记录以及log4j2.我们正在使用springboot.当我们使用POST方法访问Web服务时出现问题,它会抛出NegativeArraySizeException
java.lang.NegativeArraySizeException
at org.glassfish.jersey.logging.LoggingInterceptor.logInboundEntity(LoggingInterceptor.java:210) ~[jersey-common-2.23.2.jar:?]
at org.glassfish.jersey.logging.ServerLoggingFilter.filter(ServerLoggingFilter.java:108) ~[jersey-common-2.23.2.jar:?]
at org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:132) ~[jersey-server-2.23.2.jar:?]
at org.glassfish.jersey.server.ContainerFilteringStage.apply(ContainerFilteringStage.java:68) ~[jersey-server-2.23.2.jar:?]
Run Code Online (Sandbox Code Playgroud)
我的log4j2配置 -
<!-- Jersey logger -->
<AsyncLogger name="org.glassfish" level="all" additivity="false">
<AppenderRef ref="Console" level="off" />
<AppenderRef ref="RollingFileIO" level="all" />
</AsyncLogger>
Run Code Online (Sandbox Code Playgroud)
如果我将日志级别设置为off,一切正常.SpringBoot版本1.4.3
只是为了安全检查,我能够在Wireshark中看到传入的数据.
我得到了答案.为了让球衣写下日志记录,我们正在注册这个 -
jerseyConfig.register(
new LoggingFeature(
java.util.logging.Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME),
java.util.logging.Level.SEVERE,
LoggingFeature.Verbosity.PAYLOAD_ANY,
Integer.MAX_VALUE)
);
Run Code Online (Sandbox Code Playgroud)
这里,第四个参数maxEntitySize是Integer.MAX_VALUE.因此,在创建日志记录缓冲区时,jersey正在初始化数组maxEntity + 1,这导致异常.
我将此值更改为某个较低/逻辑数字,并且工作正常.
| 归档时间: |
|
| 查看次数: |
595 次 |
| 最近记录: |