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

时间:2013-02-25 21:49:50

标签: netty

使用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对象。

连连呢?谢谢!

1 个答案:

答案 0 :(得分:4)

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

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