diff --git a/mpush-common/src/main/java/com/shinemo/mpush/common/message/HttpRequestMessage.java b/mpush-common/src/main/java/com/shinemo/mpush/common/message/HttpRequestMessage.java index b017152e..6ba54a32 100644 --- a/mpush-common/src/main/java/com/shinemo/mpush/common/message/HttpRequestMessage.java +++ b/mpush-common/src/main/java/com/shinemo/mpush/common/message/HttpRequestMessage.java @@ -3,9 +3,11 @@ import com.shinemo.mpush.api.connection.Connection; import com.shinemo.mpush.api.protocol.Command; import com.shinemo.mpush.api.protocol.Packet; +import com.shinemo.mpush.tools.Constants; import com.shinemo.mpush.tools.MPushUtil; import io.netty.buffer.ByteBuf; +import java.util.Arrays; import java.util.Map; /** @@ -42,7 +44,6 @@ public void encode(ByteBuf body) { } - public String getMethod() { switch (method) { case 0: @@ -56,4 +57,14 @@ public String getMethod() { } return "GET"; } + + @Override + public String toString() { + return "HttpRequestMessage{" + + "method=" + method + + ", uri='" + uri + '\'' + + ", headers=" + headers + + ", body=" + (body == null ? "" : new String(body, Constants.UTF_8)) + + '}'; + } } diff --git a/mpush-common/src/main/java/com/shinemo/mpush/common/message/HttpResponseMessage.java b/mpush-common/src/main/java/com/shinemo/mpush/common/message/HttpResponseMessage.java index 99d85d7b..6ba56c0e 100644 --- a/mpush-common/src/main/java/com/shinemo/mpush/common/message/HttpResponseMessage.java +++ b/mpush-common/src/main/java/com/shinemo/mpush/common/message/HttpResponseMessage.java @@ -2,9 +2,11 @@ import com.shinemo.mpush.api.connection.Connection; import com.shinemo.mpush.api.protocol.Packet; +import com.shinemo.mpush.tools.Constants; import com.shinemo.mpush.tools.MPushUtil; import io.netty.buffer.ByteBuf; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -55,4 +57,14 @@ public HttpResponseMessage addHeader(String name, String value) { this.headers.put(name, value); return this; } + + @Override + public String toString() { + return "HttpResponseMessage{" + + "statusCode=" + statusCode + + ", reasonPhrase='" + reasonPhrase + '\'' + + ", headers=" + headers + + ", body=" + (body == null ? "" : new String(body, Constants.UTF_8)) + + '}'; + } } diff --git a/mpush-core/src/main/java/com/shinemo/mpush/core/handler/HttpProxyHandler.java b/mpush-core/src/main/java/com/shinemo/mpush/core/handler/HttpProxyHandler.java index 344d5fc8..5c2588a1 100644 --- a/mpush-core/src/main/java/com/shinemo/mpush/core/handler/HttpProxyHandler.java +++ b/mpush-core/src/main/java/com/shinemo/mpush/core/handler/HttpProxyHandler.java @@ -13,6 +13,8 @@ import com.shinemo.mpush.tools.MPushUtil; import io.netty.buffer.ByteBuf; import io.netty.handler.codec.http.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.net.InetSocketAddress; import java.net.URI; @@ -25,6 +27,7 @@ * Created by ohun on 2016/2/15. */ public class HttpProxyHandler extends BaseMessageHandler { + private static final Logger LOGGER = LoggerFactory.getLogger(HttpProxyHandler.class); private final NettyHttpClient httpClient; private final DnsMapping dnsMapping; @@ -32,7 +35,7 @@ public HttpProxyHandler() { this.httpClient = new NettyHttpClient(); this.dnsMapping = new DnsMapping(); } - + @Override public HttpRequestMessage decode(Packet packet, Connection connection) { return new HttpRequestMessage(packet, connection); @@ -48,6 +51,7 @@ public void handle(HttpRequestMessage message) { .setStatusCode(400) .setReasonPhrase("Bad Request") .sendRaw(); + LOGGER.warn("request url is empty!"); } uri = doDnsMapping(uri); @@ -63,21 +67,22 @@ public void handle(HttpRequestMessage message) { .setStatusCode(500) .setReasonPhrase("Internal Server Error") .sendRaw(); + LOGGER.error("send request ex, message=" + message, e); } } private static class DefaultHttpCallback implements HttpCallback { - private final HttpRequestMessage message; + private final HttpRequestMessage request; private int redirectCount; - private DefaultHttpCallback(HttpRequestMessage message) { - this.message = message; + private DefaultHttpCallback(HttpRequestMessage request) { + this.request = request; } @Override public void onResponse(HttpResponse httpResponse) { HttpResponseMessage response = HttpResponseMessage - .from(message) + .from(request) .setStatusCode(httpResponse.status().code()) .setReasonPhrase(httpResponse.status().reasonPhrase().toString()); for (Map.Entry entry : httpResponse.headers()) { @@ -95,33 +100,37 @@ public void onResponse(HttpResponse httpResponse) { } } response.send(); + LOGGER.debug("callback success request={}, response={}", request, response); } @Override public void onFailure(int statusCode, String reasonPhrase) { HttpResponseMessage - .from(message) + .from(request) .setStatusCode(statusCode) .setReasonPhrase(reasonPhrase) .sendRaw(); + LOGGER.warn("callback failure request={}, response={}", request, statusCode + ":" + reasonPhrase); } @Override public void onException(Throwable throwable) { HttpResponseMessage - .from(message) + .from(request) .setStatusCode(500) .setReasonPhrase("Internal Server Error") .sendRaw(); + LOGGER.error("callback exception request={}, response={}", request, 500, throwable); } @Override public void onTimeout() { HttpResponseMessage - .from(message) + .from(request) .setStatusCode(408) .setReasonPhrase("Request Timeout") .sendRaw(); + LOGGER.warn("callback timeout request={}, response={}", request, 408); } @Override diff --git a/mpush-netty/src/main/java/com/shinemo/mpush/netty/client/NettyHttpClient.java b/mpush-netty/src/main/java/com/shinemo/mpush/netty/client/NettyHttpClient.java index 25cd1e21..7ee798fe 100644 --- a/mpush-netty/src/main/java/com/shinemo/mpush/netty/client/NettyHttpClient.java +++ b/mpush-netty/src/main/java/com/shinemo/mpush/netty/client/NettyHttpClient.java @@ -143,9 +143,9 @@ private class HttpClientHandler extends ChannelHandlerAdapter { @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - LOGGER.error("http client caught an error,", cause); + RequestInfo info = ctx.channel().attr(key).get(); + LOGGER.error("http client caught an error, info=" + info, cause); try { - RequestInfo info = ctx.channel().attr(key).get(); if (info.cancel()) { info.callback.onException(cause); } diff --git a/mpush-netty/src/main/java/com/shinemo/mpush/netty/client/RequestInfo.java b/mpush-netty/src/main/java/com/shinemo/mpush/netty/client/RequestInfo.java index 408d4efa..0ceb9717 100644 --- a/mpush-netty/src/main/java/com/shinemo/mpush/netty/client/RequestInfo.java +++ b/mpush-netty/src/main/java/com/shinemo/mpush/netty/client/RequestInfo.java @@ -46,4 +46,14 @@ public void run(Timeout timeout) throws Exception { public boolean cancel() { return cancelled.compareAndSet(false, true); } + + @Override + public String toString() { + return "RequestInfo{" + + "cancelled=" + cancelled + + ", request=" + request + + ", host='" + host + '\'' + + ", timeout=" + timeout + + '}'; + } } \ No newline at end of file