Ejemplo n.º 1
0
        public void Log(LogLevel logLevel, int eventId, object state, Exception exception,
                        Func <object, Exception, string> formatter)
        {
            if (!IsEnabled(logLevel) || (state == null && exception == null))
            {
                return;
            }
            LogInfo info = new LogInfo()
            {
                ActivityContext               = GetCurrentActivityContext(),
                Name                          = _name,
                EventID                       = eventId,
                Severity                      = logLevel,
                Exception                     = exception,
                State                         = state,
                Message                       = formatter == null?state.ToString() : formatter(state, exception),
                                         Time = DateTimeOffset.UtcNow
            };

            if (ElmScope.Current != null)
            {
                ElmScope.Current.Node.Messages.Add(info);
            }
            // The log does not belong to any scope - create a new context for it
            else
            {
                var context = GetNewActivityContext();
                context.RepresentsScope = false;  // mark as a non-scope log
                context.Root            = new ScopeNode();
                context.Root.Messages.Add(info);
                _store.AddActivity(context);
            }
        }
Ejemplo n.º 2
0
        public static IDisposable Push([NotNull] ElmScope scope, [NotNull] ElmStore store)
        {
            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;
            }));
        }
Ejemplo n.º 3
0
        public static IDisposable Push(ElmScope scope, ElmStore store)
        {
            if (scope == null)
            {
                throw new ArgumentNullException(nameof(scope));
            }

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

            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;
            });
        }