82 lines
2.2 KiB
C#
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
|
|
}
|
|
} |