36 lines
1.4 KiB
C#
36 lines
1.4 KiB
C#
|
|
using System;
|
||
|
|
using System.Diagnostics;
|
||
|
|
|
||
|
|
namespace PokemonLike.Library.Support;
|
||
|
|
|
||
|
|
public static class Logger
|
||
|
|
{
|
||
|
|
public static string ColorTable(LogLevel level) => level switch
|
||
|
|
{
|
||
|
|
LogLevel.None => "white",
|
||
|
|
LogLevel.Error => "firebrick",
|
||
|
|
LogLevel.Info => "white",
|
||
|
|
LogLevel.Warn => "gold",
|
||
|
|
LogLevel.Debug => "green",
|
||
|
|
};
|
||
|
|
|
||
|
|
public static LogLevel LogLevel { get; set; } = LogLevel.Debug;
|
||
|
|
|
||
|
|
public static void Log(LogLevel level, params object[] message)
|
||
|
|
{
|
||
|
|
if (level > LogLevel) return;
|
||
|
|
var timeStamp = $"[lb]{DateTime.Now:yyyy-MM-dd HH:mm:ss}[rb]";
|
||
|
|
var callingMethod = new StackTrace().GetFrame(2)?.GetMethod();
|
||
|
|
var lvl = $"{level}".ToUpper();
|
||
|
|
var clsName = callingMethod?.DeclaringType?.Name == null ? "UnknownClass" : callingMethod!.DeclaringType!.Name;
|
||
|
|
var mthdName = callingMethod?.Name == null ? "UnknownMethod" : callingMethod!.Name;
|
||
|
|
var msg = $"{timeStamp} [lb][color={ColorTable(level)}]{lvl}[/color][rb] [color=cyan][lb]{clsName}->{mthdName}[rb][/color] ";
|
||
|
|
Godot.GD.PrintRich([msg, ..message]);
|
||
|
|
}
|
||
|
|
|
||
|
|
public static void Info(params object[] message) => Log(LogLevel.Info, message);
|
||
|
|
public static void Warn(params object[] message) => Log(LogLevel.Warn, message);
|
||
|
|
public static void Debug(params object[] message) => Log(LogLevel.Debug, message);
|
||
|
|
public static void Error(params object[] message) => Log(LogLevel.Error, message);
|
||
|
|
}
|