2013-02-25 49 views
1

使用Netty 4.0.0.Beta1,将输入/输出HTTP流量记录到基于netty的服务器的最佳方式是什么?我的管道是目前:如何在Netty 4.0.0.Beta1中记录HTTP请求/响应?

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

所以我或多或少的认识到,我在放置日志处理程序的地方遇到了一个简单的问题。我仍在实施'ChannelInboundMessageHandler '&'ChannelOutboundMessageHandler '。这是最好的方法吗? – Baron 2013-02-26 00:47:56

+1

是的,这是做到这一点的最佳方式。 – 2013-02-26 09:00:11

回答

4

注意:自测试日以来,Netty API发生了很大变化。现在您可以在流水线中添加一个LoggingHandlerMessageLoggingHandlerByteLoggingHandler都不见了。

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

+0

该配置应该配置什么文件?我在Playframework中使用netty。我不知道在哪里告诉netty来创建一个HTTP访问日志。 – devdanke 2016-03-22 01:02:27