|
@ -3,10 +3,10 @@ package com.yihu.cat;
|
|
|
import com.dianping.cat.Cat;
|
|
|
import com.dianping.cat.CatConstants;
|
|
|
import com.dianping.cat.message.Transaction;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
|
import javax.servlet.*;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
|
|
|
|
/**
|
|
@ -15,6 +15,8 @@ import java.io.IOException;
|
|
|
*/
|
|
|
public class CatServletFilter implements Filter {
|
|
|
|
|
|
private final ObjectMapper objectMapper = new ObjectMapper();
|
|
|
|
|
|
@Override
|
|
|
public void init(FilterConfig filterConfig) throws ServletException {
|
|
|
|
|
@ -27,6 +29,8 @@ public class CatServletFilter implements Filter {
|
|
|
if (isRoot(request)) {
|
|
|
Transaction t = Cat.newTransaction(CatConstants.TYPE_CALL, request.getRequestURL().toString());
|
|
|
try {
|
|
|
Cat.logEvent("Request.remoteHost", request.getRemoteHost());
|
|
|
Cat.logEvent("Request.params", objectMapper.writeValueAsString(request.getParameterMap()));
|
|
|
CatContext catContext = new CatContext();
|
|
|
Cat.logRemoteCallClient(catContext);
|
|
|
|
|
@ -34,11 +38,10 @@ public class CatServletFilter implements Filter {
|
|
|
headerRequestWrapper.putHeader(Cat.Context.PARENT, catContext.getProperty(Cat.Context.PARENT));
|
|
|
headerRequestWrapper.putHeader(Cat.Context.CHILD, catContext.getProperty(Cat.Context.CHILD));
|
|
|
filterChain.doFilter(headerRequestWrapper, servletResponse);
|
|
|
HttpServletResponse response = (HttpServletResponse) servletResponse;
|
|
|
if (response.getStatus() == 200) {
|
|
|
if (null == request.getAttribute(CatErrorConstants.ERROR_FOR_CAT)) {
|
|
|
t.setStatus(Transaction.SUCCESS);
|
|
|
} else {
|
|
|
t.setStatus("-1");
|
|
|
t.setStatus((Exception)request.getAttribute(CatErrorConstants.ERROR_FOR_CAT));
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
Cat.getProducer().logError(e);
|
|
@ -56,13 +59,12 @@ public class CatServletFilter implements Filter {
|
|
|
|
|
|
Transaction t = Cat.newTransaction(CatConstants.TYPE_SERVICE, request.getRequestURL().toString());
|
|
|
try {
|
|
|
Cat.logEvent("Request.remoteHost", request.getRemoteHost());
|
|
|
Cat.logEvent("Request.params", objectMapper.writeValueAsString(request.getParameterMap()));
|
|
|
filterChain.doFilter(headerRequestWrapper, servletResponse);
|
|
|
HttpServletResponse response = (HttpServletResponse) servletResponse;
|
|
|
if (response.getStatus() == 200) {
|
|
|
if (null == request.getAttribute(CatErrorConstants.ERROR_FOR_CAT)) {
|
|
|
t.setStatus(Transaction.SUCCESS);
|
|
|
} else {
|
|
|
t.setStatus("-1");
|
|
|
t.setStatus((Exception)request.getAttribute(CatErrorConstants.ERROR_FOR_CAT));
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
t.setStatus(e);
|