Browse Source

添加cat模块

suxiaoyang 6 years ago
parent
commit
b1d515b14b

+ 4 - 1
cat-starter/pom.xml

@ -36,7 +36,10 @@
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-okhttp</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
    </dependencies>
</project>

+ 16 - 0
cat-starter/src/main/java/com/yihu/cat/CatErrorConstants.java

@ -0,0 +1,16 @@
package com.yihu.cat;
/**
 * Constants - 常量
 * Created by progr1mmer on 2018/9/5.
 */
public class CatErrorConstants {
    /*
     * 异常在过滤链中被捕获的时候可以通过
     * request.setAttribute(ERROR_FOR_CAT, e)
     * 将异常传递给 Transaction
     */
    public static final String ERROR_FOR_CAT = "EFC";
}

+ 10 - 8
cat-starter/src/main/java/com/yihu/cat/CatServletFilter.java

@ -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);

+ 1 - 1
cat-starter/src/main/java/com/yihu/cat/config/CatFilterConfig.java

@ -18,7 +18,7 @@ public class CatFilterConfig {
        CatServletFilter filter = new CatServletFilter();
        registration.setFilter(filter);
        registration.addUrlPatterns("/*");
        registration.setName("cat-filter");
        registration.setName("catFilter");
        registration.setOrder(1);
        return registration;
    }