Skip to content

Instantly share code, notes, and snippets.

@thenameless314159
Created May 10, 2019 09:59
Show Gist options
  • Save thenameless314159/fbdb914c7a4f42134470981f590823aa to your computer and use it in GitHub Desktop.
Save thenameless314159/fbdb914c7a4f42134470981f590823aa to your computer and use it in GitHub Desktop.
Astron: LoggingStrategy imlemention
/// <summary>
/// Use this strategy to output logs to your console.
/// </summary>
public class ConsoleOutputStrategy : LoggingStrategy
{
private readonly Dictionary<LogLevel, ConsoleColor> _colorWrapper = new Dictionary<LogLevel, ConsoleColor>()
{
{LogLevel.Trace, ConsoleColor.DarkGreen },
{LogLevel.Debug, ConsoleColor.Green },
{LogLevel.Info, ConsoleColor.Blue },
{LogLevel.Warn, ConsoleColor.DarkYellow },
{LogLevel.Error, ConsoleColor.Red },
{LogLevel.Fatal, ConsoleColor.DarkRed }
};
public ConsoleOutputStrategy(bool printDate, LogLevel minLevelToPrint = LogLevel.Info)
: base(new LogConfig(printDate, minLevelToPrint, LogLevel.None))
{
}
protected override void Log(LogLevel level, string formattedHeader, string message)
{
if (Console.ForegroundColor != _colorWrapper[level])
Console.ForegroundColor = _colorWrapper[level];
Console.WriteLine($"{formattedHeader} {message}");
}
protected override void Log<T>(LogLevel level, string formattedHeader, string message, T instance)
{
// implement your own instance displayer logic
}
protected override void OnMinLevel(LogLevel level, string formattedHeader, string message)
{
// don't write min level
}
protected override void OnMaxLevel(LogLevel level, string formattedHeader, string message)
{
Console.WriteLine(); // write empty line on None log level
}
public override void Save()
{
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment