using System; using System.Drawing; using Colorful; using Console = Colorful.Console; namespace DFEngine.Logging { public class ConsoleLogger { protected internal byte ConsoleLogLevel = byte.MaxValue; protected virtual string LogTypeName { get; } internal object IOLocker; public ConsoleLogger() { IOLocker = new object(); } public void SetConsoleLevel(byte logLevel) { ConsoleLogLevel = logLevel; } public void PrettyConsoleWriteLine(LogType logTypeName, dynamic logSubtype, string message) { if ((byte) logSubtype > ConsoleLogLevel) return; lock (IOLocker) { var msgColor = Color.BlueViolet; if (!ConsoleColors.GetColor(logTypeName, (byte) logSubtype, out var prefixColor)) return; StyleSheet printStyle = new StyleSheet(prefixColor); } } public void ConsoleWriteLine(LogType logTypeName, dynamic logSubtype, string message) { if ((byte)logSubtype > ConsoleLogLevel) return; lock (IOLocker) { if (!ConsoleColors.GetColor(logTypeName, (byte)logSubtype, out var pColor)) return; Console.ForegroundColor = pColor; Console.WriteLine("\r" + message); Console.ResetColor(); } } public void ConsoleWriteLine(LogType logTypeName, dynamic logSubtype, string message, params object[] args) { if ((byte)logSubtype > ConsoleLogLevel) return; lock (IOLocker) { if (!ConsoleColors.GetColor(logTypeName, (byte)logSubtype, out var pColor)) return; var msg = string.Format($"[{logTypeName}][{logSubtype}] {string.Format(message, args)}"); Console.ForegroundColor = pColor; Console.WriteLine(msg); Console.ResetColor(); } } public void WriteConsoleProgressBar(string text, params object[] args) { lock (IOLocker) { Console.ForegroundColor = Color.Green; Console.WriteLine(text, args); Console.ResetColor(); } } } }