当前位置: 首页 > 知识库问答 >
问题:

如何在Netty 4.0.0.beta1中记录HTTP请求/响应?

叶琦
2023-03-14

使用Netty 4.0.0.beta1,对我来说,将传入/传出HTTP流量记录到基于Netty的服务器的最佳方式是什么?我的管道当前为:

p.addLast("decoder", new HttpRequestDecoder());
p.addLast("aggregator", new HttpObjectAggregator(1048576));

p.addLast("encoder", new HttpResponseEncoder());
p.addLast("handler", new MyBusinessLogicHandler());

我尝试编写一个实现ChannelInboundMessageHandler 的处理程序,然后在InboundBufferUpdated(ChannelHandlerContext ctx)方法中进行日志记录,这似乎对传入的请求很好,但这是推荐的方式吗?

当我试图实现ChannelOutboundMessageHandler 时,我未能在Flush(ChannelHandlerContext ctx,ChannelPromise promise)方法中看到实际的FullHttpResponse对象。

建议?谢了!

共有1个答案

华景同
2023-03-14

注意:Netty API自测试版以来已经发生了很大的变化。现在您只需在管道中添加logginghandler即可。MessageLoggingHandlerByteLoggingHandler消失了。

您可以将MessageLoggingHandler放在管道中的编解码器处理程序之后(即MyBusinessLogicHandler之前)。默认情况下,它记录debug级别的所有消息和事件,因此您可能需要对其进行调整。如果您对低级流量转储非常感兴趣,请使用ByTelogGingHandler并将其放在编解码器处理程序之前。

 类似资料:
  • 在Vertx WebClient中记录传出http请求和响应的最简单方法是什么。我正在寻找类似于httpserver LoggerHandler的东西,但接下来是webclient的输出请求。

  • 应用程序应异步(在单独的线程中)记录以下信息,而不会影响客户端。 请求HTTP方法和URI 如果我们在过滤器中使用,那么spring将无法再次使用它进行json到对象的映射。在输入流到对象映射期间的某个地方,我们可以插入记录器吗? 更新: 我们可以在MessageConverter中编写日志代码,但这似乎不是一个好主意。

  • 问题内容: 这是In go中的后续问题,如何检查写入http.ResponseWriter的http响应因为那里的解决方案需要伪造一个请求,所以对于单元测试非常有效,但不适用于实时服务器。 我想将我的Web服务响应于从用户收到的请求而返回的HTTP响应转储到日志文件(或控制台)中。输出应该告诉我标题是什么和JSON有效负载。 如何做到这一点? 如果有一个使用http.ResponseWriter作

  • 我在改型API中找不到记录完整请求/响应体的相关方法。我希望在探查器中得到一些帮助(但它只提供关于响应的元数据)。我尝试在构建器中设置日志级别,但这也没有帮助: 编辑:此代码正在工作。我不知道为什么它在早些时候不起作用。可能是因为我用的是旧版本的改装。

  • 问题内容: 我正在使用RestTemplate来调用Web服务。 如果此操作无法返回用户ID,我只会返回null,但不知道为什么。如何将实际的XML响应输出到日志? 问题答案: 根据所使用的建立HTTP连接的方法,您可以查看在实际HTTP连接类中打开日志记录。 例如,如果您使用Commons HttpClient,则可以设置 commons- httpclient项目在其日志记录做法的文档中有一整

  • 我在雄猫上部署了一个泽西岛 2.5.1 应用程序。我在我的网络中添加了以下配置.xml: 它打印请求和响应头。但是,它没有在响应中打印请求/响应实体/主体。 我试着和不同的情妇玩,但没有运气,比如: 感谢您的回答。看起来我在上面粘贴了错误的配置。这是我在我的网络上有什么.xml: 它记录标题。但它不记录实体。这是我在日志中看到的: 我的Jersey应用程序部署在Tomcat 7_50服务器上。 如