using System; using Quadarax.Foundation.Core.Console; namespace Quadarax.Foundation.Core.Logging { public class ConsoleLog : ILog { private string _typeName; private ConsoleWriter _infoWriter = new ConsoleWriter(ConsoleColor.White); private ConsoleWriter _debugWriter = new ConsoleWriter(ConsoleColor.Green); private ConsoleWriter _warnWriter = new ConsoleWriter(ConsoleColor.Yellow); private ConsoleWriter _errorWriter = new ConsoleWriter(ConsoleColor.Red); private ConsoleWriter _traceWriter = new ConsoleWriter(ConsoleColor.DarkGray); public ConsoleLog(Type owningType) { _typeName = owningType.Name; } public ConsoleLog(string owningTypeName) { _typeName = owningTypeName; } public void Log(LogSeverityEnum severity, int code, string message) { Log(severity, $"Code:{code}, {message}"); } public void Log(LogSeverityEnum severity, string message) { var now = DateTime.Now; var thNum = System.Threading.Thread.CurrentThread.ManagedThreadId; var final = $"[{severity}:{now.ToLongTimeString()}:{thNum}]#{_typeName}: {message}"; switch (severity) { case LogSeverityEnum.Info: _infoWriter.WriteLine(final); break; case LogSeverityEnum.Debug: _debugWriter.WriteLine(final); break; case LogSeverityEnum.Warn: _warnWriter.WriteLine(final); break; case LogSeverityEnum.Fatal: case LogSeverityEnum.Error: _errorWriter.WriteLine(final); break; } } public void Log(LogSeverityEnum severity, string message, Exception? exception) { Log(severity, $"{message}\n{exception}"); } public void Log(LogSeverityEnum severity, int code, string message, Exception? exception) { Log(severity, string.Format("{2} - {0}\n{1}", message,exception, code)); } } }