public static IDisposable Push(TraceScope scope, TraceStore store)
        {
            if (scope == null)
            {
                throw new ArgumentNullException(nameof(scope));
            }

            if (store == null)
            {
                throw new ArgumentNullException(nameof(store));
            }

            //if (scope._name.Equals("Microsoft.AspNetCore.Hosting.Internal.WebHost", StringComparison.OrdinalIgnoreCase))
            //{
            //    return new DisposableAction(() =>
            //    {
            //        //Current.Node.EndTime = DateTimeOffset.UtcNow;
            //        //Current = Current.Parent;
            //    });
            //}

            var temp = Current;

            Current        = scope;
            Current.Parent = temp;

            Current.Node = new ScopeNode()
            {
                StartTime = DateTimeOffset.UtcNow,
                State     = Current._state,
                Name      = Current._name
            };

            if (Current.Parent != null)
            {
                Current.Node.Parent = Current.Parent.Node;
                Current.Parent.Node.Children.Add(Current.Node);
            }
            else
            {
                Current.Context.Root = Current.Node;
                store.AddActivity(Current.Context);
            }

            return(new DisposableAction(() =>
            {
                Current.Node.EndTime = DateTimeOffset.UtcNow;
                Current = Current.Parent;
            }));
        }
        public TraceLoggerProvider(TraceStore store, IOptions <TraceOptions> options)
        {
            if (store == null)
            {
                throw new ArgumentNullException(nameof(store));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            _store   = store;
            _options = options.Value;
        }
 public TraceLogger(string name, TraceOptions options, TraceStore store)
 {
     _name    = name;
     _options = options;
     _store   = store;
 }
 public TracePageMiddleware(RequestDelegate next, IOptions <TraceOptions> options, TraceStore store)
 {
     _next    = next;
     _options = options.Value;
     _store   = store;
 }