dubbo Trace 日誌追蹤

import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.rpc.*;
import com.bwton.ttsp.pay.common.util.TraceIDUtils;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.MDC;

/**
 * TokenInvokerFilter
 *
 * @author william.liangf
 */
@Slf4j
@Activate(group = {Constants.CONSUMER, Constants.PROVIDER})
public class TraceIDFilter implements Filter {
    private static final String TRACE_ID = "traceId";

    public static Gson getGson() {
        return new GsonBuilder().setDateFormat("yyyy-MM-dd HH🇲🇲ss").create();
    }

    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation)
            throws RpcException {
//        if (invocation.getAttachment(TRACE_ID) != null) {
//            TraceIDUtils.setTraceId(invocation.getAttachment(TRACE_ID));
//            String mdcData = invocation.getAttachment(TRACE_ID);
//            MDC.put(TRACE_ID, mdcData);
//        } else if (TraceIDUtils.getTraceId() != null) {
//            invocation.getAttachments().put(TRACE_ID, TraceIDUtils.getTraceId());
//        }
        if (invocation.getAttachment(TRACE_ID) != null) {
            MDC.put(TRACE_ID, invocation.getAttachment(TRACE_ID));
        } else{
            String trace = (int)(Math.random()*9000+1000)+"";
            invocation.getAttachments().put(TRACE_ID, trace);
            MDC.put(TRACE_ID, trace);
        }

        return invoker.invoke(invocation);
    }
}

 

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH🇲🇲ss.SSS} [%thread][%X{traceId}] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

traceIdFilter=com.bwton.ttsp.pay.common.filter.TraceIDFilter

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章