public class ColoredConsoleLoggerConfiguration { public LogLevel LogLevel { get; set; } = LogLevel.Warning; public int EventId { get; set; } = 0; public ConsoleColor Color { get; set; } = ConsoleColor.Yellow; }
public class ColoredConsoleLoggerProvider : ILoggerProvider { private readonly ColoredConsoleLoggerConfiguration _config;
private readonly ConcurrentDictionary<string, ColoredConsoleLogger> _loggers = new ConcurrentDictionary<string, ColoredConsoleLogger>();
public ColoredConsoleLoggerProvider(ColoredConsoleLoggerConfiguration config) { _config = config; }
public ILogger CreateLogger(string categoryName) { return _loggers.GetOrAdd(categoryName, name => new ColoredConsoleLogger(name, _config)); }
public void Dispose() { _loggers.Clear(); } }
public class ColoredConsoleLogger : ILogger { private static object _lock = new Object(); private readonly string _name; private readonly ColoredConsoleLoggerConfiguration _config;
var config = new ColoredConsoleLoggerConfiguration { LogLevel = LogLevel.Information, Color = ConsoleColor.Red }; logging.AddProvider(new ColoredConsoleLoggerProvider(config));