1

使用 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<FullHttpRequest>然后在该inboundBufferUpdated(ChannelHandlerContext ctx)方法中进行日志记录,这对于传入的请求似乎工作正常,但这是推荐的方式吗?

当我尝试实现ChannelOutboundMessageHandler<FullHttpResponse>时,我没有成功地看到flush(ChannelHandlerContext ctx, ChannelPromise promise)方法中的实际 FullHttpResponse 对象。

建议?谢谢!

4

1 回答 1

4

注意:Netty API 自测试版以来发生了很大变化。现在您可以LoggingHandler在管道中添加一个。 MessageLoggingHandler并且ByteLoggingHandler消失了。

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

于 2013-02-26T18:49:52.343 回答