Files
Voile/DaggerFramework/Source/Utils/Logger.cs

82 lines
2.2 KiB
C#

namespace DaggerFramework.Utils
{
public class Logger
{
public static Action<string, LogType>? 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
}
}