namespace DaggerFramework.Utils { public class Logger { public static Action? OnLog; public Logger(string className) { _className = className; } public void Echo(object what) { LogConsole((string)what, LogType.Echo); OnLog?.Invoke((string)what, LogType.Echo); } public void Info(object what) { LogType logType = LogType.Info; string message = $"({DateFormat}) [{logType.ToString().ToUpper()}/{_className}] {what}"; LogConsole(message, logType); OnLog?.Invoke(message, logType); } public void Warn(object what) { LogType logType = LogType.Warn; string message = $"({DateFormat}) [{logType.ToString().ToUpper()}/{_className}] {what}"; LogConsole(message, logType); OnLog?.Invoke(message, logType); } public void Error(object what) { LogType logType = LogType.Error; string message = $"({DateFormat}) [{logType.ToString().ToUpper()}/{_className}] {what}"; LogConsole(message, logType); OnLog?.Invoke(message, logType); } private static string DateFormat => $"{DateTime.Now:t}"; private static void LogConsole(string what, LogType logType) { Console.ForegroundColor = GetConsoleColorForLog(logType); Console.WriteLine(what); Console.ForegroundColor = ConsoleColor.White; } private static ConsoleColor GetConsoleColorForLog(LogType logType) { ConsoleColor color = ConsoleColor.White; switch (logType) { case LogType.Info: color = ConsoleColor.Cyan; break; case LogType.Warn: color = ConsoleColor.Yellow; break; case LogType.Error: color = ConsoleColor.Red; break; } return color; } private readonly string _className; } public enum LogType { Echo, Info, Warn, Error } }