Mercurial > pub > ImplabNet
view Implab/Diagnostics/Trace.cs @ 247:fb70574741a1 v3
working on promises
author | cin |
---|---|
date | Fri, 26 Jan 2018 18:46:27 +0300 |
parents | babe55c34931 |
children | 6f4630d0bcd9 |
line wrap: on
line source
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Implab.Diagnostics { public static class Trace<T> { readonly static LogChannel<TraceEvent> _channel = new LogChannel<TraceEvent>(typeof(T).Name); public static LogChannel<TraceEvent> Channel { get { return _channel; } } /// <summary> /// Starts the logical operation nested to the current operation nested to the current one. /// </summary> [Conditional("TRACE")] public static void StartLogicalOperation() { TraceContext.Instance.StartLogicalOperation(); } /// <summary> /// Starts the logical operation with the specified name, this name is usefull in logs. /// </summary> /// <param name="name">Name.</param> [Conditional("TRACE")] public static void StartLogicalOperation(string name) { Channel.LogEvent(new TraceEvent(TraceContext.Instance.CurrentOperation, TraceEventType.OperationStarted, name)); TraceContext.Instance.StartLogicalOperation(name); } /// <summary> /// Ends the logical operation and restores the previous one. /// </summary> [Conditional("TRACE")] public static void EndLogicalOperation() { var op = TraceContext.Instance.EndLogicalOperation(); Channel.LogEvent(new TraceEvent(op, TraceEventType.OperationCompleted, String.Format("-{0} : {1}ms", op.Name, op.Duration))); } /// <summary> /// Writes an informational message. /// </summary> /// <param name="format">Format.</param> /// <param name="arguments">Arguments.</param> [Conditional("TRACE")] public static void Log(string format, params object[] arguments) { Channel.LogEvent(TraceEvent.Create(TraceContext.Instance.CurrentOperation, TraceEventType.Information, format, arguments)); } /// <summary> /// Writes a warning message. /// </summary> /// <param name="format">Format.</param> /// <param name="arguments">Arguments.</param> [Conditional("TRACE")] public static void Warn(string format, params object[] arguments) { Channel.LogEvent(TraceEvent.Create(TraceContext.Instance.CurrentOperation, TraceEventType.Warning, format, arguments)); } [Conditional("TRACE")] public static void Error(string format, params object[] arguments) { Channel.LogEvent(TraceEvent.Create(TraceContext.Instance.CurrentOperation, TraceEventType.Error, format, arguments)); } [Conditional("TRACE")] public static void Error(Exception err) { Error("{0}", err); } } }