/// <summary>下一步</summary> /// <param name="value"></param> public virtual void OnNext(KeyValuePair <String, Object> value) { if (value.Key.IsNullOrEmpty()) { return; } // 当前活动名字匹配 var activity = Activity.Current; if (activity != null) { var start = !StartName.IsNullOrEmpty() ? StartName : (activity.OperationName + ".Start"); var end = !EndName.IsNullOrEmpty() ? EndName : (activity.OperationName + ".Stop"); var error = !ErrorName.IsNullOrEmpty() ? ErrorName : (activity.OperationName + ".Exception"); if (start == value.Key) { Tracer.NewSpan(activity.OperationName); } else if (end == value.Key) { var span = DefaultSpan.Current; span?.Dispose(); } else if (error == value.Key || value.Key.EndsWith(".Exception")) { var span = DefaultSpan.Current; if (span != null && value.Value.GetValue("Exception") is Exception ex) { span.SetError(ex, null); } } } }
/// <summary> /// 哈希数 /// </summary> /// <returns></returns> public override int GetHashCode() { return(StartName.GetHashCode() + EndName.GetHashCode()); }