在Spring Boot反应式Web应用程序上启用SSL并对其进行http调用,从而在控制台中打印异常噪音

时间:2018-09-27 03:33:44

标签: spring-boot netty spring-webflux reactor-netty

在使Spring Boot反应式Web应用程序支持SSL之后,当我尝试对服务器进行http调用时,它将在控制台中的异常跟踪下面打印。作为应用程序所有者,我无法阻止任何人使用我的服务。但是我应该能够防止在控制台中进行跟踪打印,尤其是在IO操作成本很高的响应式Web应用程序中,。有防止这种情况发生的想法吗?

编辑3

2018-10-01 14:11:18.440 ERROR 12457 --- [ctor-http-nio-2] r.i.n.channel.CloseableContextHandler    : Handler failure while no child channelOperation was present

编辑2

IO操作成本很高的地方我刚刚意识到这可能是在事件循环线程池之外发生的。因此,它可能不会阻塞任何线程。但是我仍然想阻止它在控制台中打印。

编辑1

复制步骤

  • 检出项目https://github.com/sp13ceg/spring-boot-reative-ssl
  • 启动服务器 ./gradlew booRun
  • 进行不安全的https调用curl --insecure https://localhost:8080/hi时不会出错
  • 拨打http curl http://localhost:8080/hi,您将在控制台中看到异常。

    io.netty.handler.ssl.NotSslRecordException:不是SSL / TLS记录:474554202f686920485454502f312e310d0a486f73743a206c6f63616c686f73743a383434340d0a557365722d4167656e743a206375726c2f372e35342e300d0aa363624 在io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1178)[netty-handler-4.1.29.Final.jar:4.1.29.Final] 在io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1243)[netty-handler-4.1.29.Final.jar:4.1.29.Final] 在io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:489)[netty-codec-4.1.29.Final.jar:4.1.29.Final] 在io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:428)[netty-codec-4.1.29.Final.jar:4.1.29.Final] 在io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:265)[netty-codec-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)上[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.DefaultChannelPipeline $ HeadContext.channelRead(DefaultChannelPipeline.java:1434)[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)上[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965)上[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.nio.AbstractNioByteChannel $ NioByteUnsafe.read(AbstractNioByteChannel.java:163)[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:628)[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:563)[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:480)[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:442)[netty-transport-4.1.29.Final.jar:4.1.29.Final] 在io.netty.util.concurrent.SingleThreadEventExecutor $ 5.run(SingleThreadEventExecutor.java:884)[netty-common-4.1.29.Final.jar:4.1.29.Final] 在java.lang.Thread.run(Thread.java:748)

1 个答案:

答案 0 :(得分:0)

我只是错过了日志跟踪中的重要内容。原始堆栈跟踪之前有一行,显示了来自日志的日志名称。请参阅编辑3

添加此属性将禁用此日志在控制台中打印。 logging.level.reactor.ipc.netty.channel.CloseableContextHandler=off