using System;
namespace IPA.Logging.Printers
{
///
/// Prints a pretty message to the console.
///
public class ColoredConsolePrinter : LogPrinter
{
Logger.LogLevel filter = Logger.LogLevel.All;
///
/// A filter for this specific printer.
///
public override Logger.LogLevel Filter { get => filter; set => filter = value; }
///
/// The color to print messages as.
///
public ConsoleColor Color { get; set; } = Console.ForegroundColor;
///
/// Prints an entry to the associated file.
///
/// the of the message
/// the the message was recorded at
/// the name of the log that sent the message
/// the message to print
public override void Print(Logger.Level level, DateTime time, string logName, string message)
{
if (((byte)level & (byte)StandardLogger.PrintFilter) == 0) return;
Console.ForegroundColor = Color;
foreach (var line in message.Split(new[] { "\n", Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
Console.WriteLine(Logger.LogFormat, line, logName, time, level.ToString().ToUpper());
Console.ResetColor();
}
}
}