2013-02-25 112 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