本文主要是說明core怎么使用鏈路追蹤
一.添加nuget包
二.在Startup中添加配置
/// <summary> /// 注冊zipkinTrace /// </summary> /// <param name="app"></param> /// <param name="loggerFactory"></param> /// <param name="lifetime"></param> public void RegisterZipkinTrace(IApplicationBuilder app, ILoggerFactory loggerFactory, IApplicationLifetime lifetime) { lifetime.ApplicationStarted.Register(() => { TraceManager.SamplingRate = 1.0f;//記錄數據密度,1.0代表全部記錄 var logger = new TracingLogger(loggerFactory, "zipkin4net");//內存數據 var httpSender = new HttpZipkinSender("http://120.78.146.192:9411", "application/json"); var tracer = new ZipkinTracer(httpSender, new JSONSpanSerializer());//注冊zipkin TraceManager.RegisterTracer(tracer);//注冊 TraceManager.Start(logger);//放到內存中的數據 //File.AppendAllText("D:" + this.GetType().Name + ".txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss" + logger)); }); lifetime.ApplicationStopped.Register(() => TraceManager.Stop()); app.UseTracing("net_core_api");//這邊的名字可自定義 }
然后在Configure中添加RegisterZipkinTrace(app, loggerFactory, lifetime)注冊
三.如何獲取spanId和traceId的值
var myTraceId = ConvertHelper.EncodeLongToLowerHexString(Trace.Current.CurrentSpan.TraceId); var mySpanId = ConvertHelper.EncodeLongToLowerHexString(Trace.Current.CurrentSpan.SpanId);
獲取出來的值不是真正的spanId和traceId,還需要進行編碼:
public static string EncodeLongToLowerHexString(long value) { return value.ToString("x16"); }
好了,現在通過這個方法就可以獲取出真正的spanid和traceid,然后輸出在日志 以便進行查詢日志
注:通過配置以后,只要是請求接口 都會記錄下來
菜鳥代碼,大神勿噴 如有不對的地方,歡迎指正