Пример #1
0
		void Write(ILogger target, LogEventLevel level, string outcome)
		{
			_completionBehaviour = CompletionBehaviourDebug.Silent;

			var elapsed = _stopwatch.Elapsed.TotalMilliseconds;

			target.Write(level, $"{_messageTemplate} {{{nameof(Properties.Outcome)}}} in {{{nameof(Properties.Elapsed)}:0.0}} ms", _args.Concat(new object[] { outcome, elapsed }).ToArray());

			PopLogContext();
		}
Пример #2
0
		internal OperationDebug(ILogger target, string messageTemplate, object[] args, CompletionBehaviourDebug 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();
		}
Пример #3
0
		/// <summary>
		/// Cancel the timed operation. After calling, no event will be recorded either through
		/// completion or disposal.
		/// </summary>
		public void Cancel()
		{
			_completionBehaviour = CompletionBehaviourDebug.Silent;
			PopLogContext();
		}