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

+1

예. 이렇게하는 것이 가장 좋은 방법입니다. –

답변

4

참고 : Netty API는 베타 테스트 이후로 많이 변경되었습니다. 이제 LoggingHandler을 파이프 라인에 추가하면됩니다. MessageLoggingHandlerByteLoggingHandler이 사라졌습니다.

MessageLoggingHandler을 파이프 라인의 코덱 처리기 뒤에 넣을 수 있습니다 (즉, MyBusinessLogicHandler 이전). 기본적으로 모든 메시지와 이벤트는 DEBUG 수준에 기록되므로이를 조정할 수도 있습니다. 낮은 수준의 트래픽 덤프에 관심이 있다면 ByteLoggingHandler을 사용하여 코덱 처리기 앞에 배치하십시오.

+0

이 파일을 어떤 파일에 적용해야합니까? Playframework 내에서 netty를 사용하고 있습니다. netty에게 HTTP 액세스 로그를 생성 할 위치를 알 수 없습니다. – devdanke

관련 문제