1

Using Netty 4.0.0.Beta1, what would be the best way for me to log the incoming/outgoing HTTP traffic to a netty-based server? My pipeline is currently:

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

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

I tried writing a handler that implements ChannelInboundMessageHandler<FullHttpRequest>, and then does the logging in the inboundBufferUpdated(ChannelHandlerContext ctx) method, which seems to work fine for incoming requests, but is that the recommended way?

When I tried to implement ChannelOutboundMessageHandler<FullHttpResponse>, I wasn't successful in seeing the actual FullHttpResponse objects inside the flush(ChannelHandlerContext ctx, ChannelPromise promise) method.

Suggestions? Thanks!

4

1 に答える 1

4

注: Netty API は、ベータ版の時代から大幅に変更されました。LoggingHandlerこれで、パイプライン に a を追加できます。MessageLoggingHandlerそしてByteLoggingHandlerなくなっています。

MessageLoggingHandlerパイプラインのコーデック ハンドラの後 (つまり、前) に置くことができますMyBusinessLogicHandler。デフォルトでは、すべてのメッセージとイベントをDEBUGレベルでログに記録するため、調整することをお勧めします。低レベルのトラフィック ダンプに関心がある場合は、これを使用ByteLoggingHandlerしてコーデック ハンドラの前に配置してください。

于 2013-02-26T18:49:52.343 に答える