view Implab/Diagnostics/ConsoleTraceListener.cs @ 207:558f34b2fb50 v2

added Safe.DispatchEvent() a legacy equivalent for '?.Invoke()' added Safe.Dispose(IEnumerable) added PromiseExtensions.CancellationPoint to add a cancellation point to the chain of promises added IPromise<T> PromiseExtensions.Then<T>(this IPromise<T> that, Action<T> success) overloads added PromiseExtensions.Error() overloads to handle a error or(and) a cancellation
author cin
date Wed, 09 Nov 2016 12:03:22 +0300
parents 04d4c92d0f28
children
line wrap: on
line source

using System;
using System.Text;

namespace Implab.Diagnostics {
    public class ConsoleTraceListener: ListenerBase {

        static readonly object _consoleLock = new object();

        public override void Write(LogEventArgs args, object entry) {
            var msg = new StringBuilder();

            for (int i = 0; i < args.Operation.Level; i++)
                msg.Append("  ");
            msg.AppendFormat("[{0}]: {1}", args.ThreadId, entry);

            lock (_consoleLock) {
                Console.ForegroundColor = (ConsoleColor)(args.ThreadId % 15 + 1);
                Console.WriteLine(msg);
            }
        }
    }
}