/// <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);
                    }
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// 哈希数
 /// </summary>
 /// <returns></returns>
 public override int GetHashCode()
 {
     return(StartName.GetHashCode() + EndName.GetHashCode());
 }