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