void Write(ILogger target, LogEventLevel level, string outcome) { _completionBehaviour = CompletionBehaviour.Silent; var elapsed = _stopwatch.Elapsed.TotalMilliseconds; target.Write(level, _exception, $"{_messageTemplate} {{{nameof(Properties.Outcome)}}} in {{{nameof(Properties.Elapsed)}:0.0}} ms", _args.Concat(new object[] { outcome, elapsed }).ToArray()); PopLogContext(); }
internal Operation(ILogger target, string messageTemplate, object[] args, CompletionBehaviour completionBehaviour, LogEventLevel completionLevel, LogEventLevel abandonmentLevel) { _target = target ?? throw new ArgumentNullException(nameof(target)); _messageTemplate = messageTemplate ?? throw new ArgumentNullException(nameof(messageTemplate)); _args = args ?? throw new ArgumentNullException(nameof(args)); _completionBehaviour = completionBehaviour; _completionLevel = completionLevel; _abandonmentLevel = abandonmentLevel; _popContext = LogContext.PushProperty(nameof(Properties.OperationId), Guid.NewGuid()); _start = GetTimestamp(); }
internal Operation(ILogger target, string messageTemplate, object[] args, CompletionBehaviour completionBehaviour, LogEventLevel completionLevel, LogEventLevel abandonmentLevel) { if (target == null) { throw new ArgumentNullException(nameof(target)); } if (messageTemplate == null) { throw new ArgumentNullException(nameof(messageTemplate)); } if (args == null) { throw new ArgumentNullException(nameof(args)); } _target = target; _messageTemplate = messageTemplate; _args = args; _completionBehaviour = completionBehaviour; _completionLevel = completionLevel; _abandonmentLevel = abandonmentLevel; _popContext = LogContext.PushProperty(nameof(Properties.OperationId), Guid.NewGuid()); _stopwatch = Stopwatch.StartNew(); }
/// <summary> /// Cancel the timed operation. After calling, no event will be recorded either through /// completion or disposal. /// </summary> public void Cancel() { _completionBehaviour = CompletionBehaviour.Silent; PopLogContext(); }