public void LogicalContext_PushPopOnOneThread_ValueAccessible() { var tracing = new TraceStack(); var pair = new KeyValuePair <string, string>("TraceID", "1234"); using (tracing.Push(pair)) { var showMe = tracing.CurrentStack; } }
/// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> private void Dispose(bool disposing) { if (_Disposed) { return; } if (disposing) { TraceStack.Pop(); } _Disposed = true; }
public sealed override void OnEntry(MethodExecutionArgs args) { try { m_Caller = args.Method.Name; var log = GetLog(args.Instance, args.Arguments); if (log != null && log.IsTraceEnabled) { var execTag = new ExecutionTag { Begin = s_StopWatch.Elapsed }; args.MethodExecutionTag = execTag; log.Trace(LogFormatters.TraceEnter(m_Message), m_Caller); execTag.TraceStackHandle = TraceStack.Push(LogFormatters.ContextPart(m_Caller)); } } catch (Exception ex) { var log = new Log <AutoTraceAttribute>(); log.Error("Unexpected error. Please contact your Administrator", ex); } }
/// <summary> /// Forces any left-behind calls to Start() to be closed. /// </summary> public static void ClearStack() { TraceStack.Clear(); }
protected override CompilerMessage MakeMessage(int?messageCode, string context = default) => !messageCode.HasValue ? new CompilerMessage(null, null, context, TraceStack?.ToArray()) : new CompilerMessage(messageCode.Value, CompilerMessage.GetMessageLevel(messageCode.Value), context, TraceStack?.ToArray());
public void PopTrace() => TraceStack.Pop();
public void PushTrace(TraceSite traceSite) => TraceStack.Push(traceSite);
/// <summary> /// Prevents a default instance of the <see cref="TraceBlock" /> class from being created. /// </summary> private TraceBlock() { TraceStack.Push(this); }