bonuska2/SimpleTGBot/Logging/StdoutSink.cs

24 lines
729 B
C#

namespace SimpleTGBot.Logging;
internal class StdoutSink : ILogSink
{
private readonly ConsoleColor[] colors = [ConsoleColor.White, ConsoleColor.Cyan, ConsoleColor.Yellow, ConsoleColor.DarkRed, ConsoleColor.Red];
private ConsoleColor originalConsoleColor;
public StdoutSink()
{
originalConsoleColor = Console.ForegroundColor;
}
public void Log(DateTime time, LogLevel level, string message)
{
Console.ForegroundColor = colors[(int)level];
foreach (string line in message.Split(Environment.NewLine))
Console.WriteLine($"({time:u}) [{level.GetName()}] {line}");
}
public void Dispose() {
Console.ForegroundColor = originalConsoleColor;
}
}