private void StampFormatter(LogItem item) { var original_foreground = Console.ForegroundColor; var original_background = Console.BackgroundColor; var level_color = item.Level switch { LogLevel.Information => item.Configuration.Theme.InfoColor, LogLevel.Warning => item.Configuration.Theme.WarnColor, LogLevel.Error => item.Configuration.Theme.ErrorColor, LogLevel.Critical => item.Configuration.Theme.CriticalColor, LogLevel.Debug => item.Configuration.Theme.DebugColor, LogLevel.Trace => item.Configuration.Theme.TraceColor, LogLevel.None => ConsoleColor.Gray, _ => ConsoleColor.Gray }; Console.ForegroundColor = item.Configuration.Theme.BracketColor; Write("["); Console.ForegroundColor = level_color; Write(item.Level); Console.ForegroundColor = item.Configuration.Theme.BracketColor; Write("]"); Console.ForegroundColor = original_foreground; Console.ForegroundColor = item.Configuration.Theme.BracketColor; Write("["); Console.ForegroundColor = item.Configuration.Theme.TimeStampColor; Write(item.TimeStamp.ToString(item.Configuration.TimeStampFormat)); Console.ForegroundColor = item.Configuration.Theme.BracketColor; Write("]"); Console.ForegroundColor = original_foreground; var name = item.Name; foreach (var trim in item.Configuration.TrimNames) { if (name.StartsWith(trim)) { name = name.Replace(trim, string.Empty); break; } } foreach (var(val, repl) in item.Configuration.ReplaceNames) { if (name == val) { name = repl; break; } } if (!string.IsNullOrEmpty(name)) { Console.ForegroundColor = item.Configuration.Theme.BracketColor; Write("["); Console.ForegroundColor = item.Configuration.Theme.NameColor; Write(name); if (item.Id != 0) { Write("("); Write(item.Id); Write(")"); } Console.ForegroundColor = item.Configuration.Theme.BracketColor; Write("]"); Console.ForegroundColor = original_foreground; } Write(" "); }
public void PreLog(LogItem item) { }
public void PostLog(LogItem item) { Console.ForegroundColor = original_foreground_color; Console.BackgroundColor = original_background_color; }
private static async Task LogHandler() { LogItem?n_item = null; while (static_config is null) { await Task.Delay(15); } var config = static_config; var formatter = config.FormatterFactory(); while (!config.Token.IsCancellationRequested) { try { while (queue.IsEmpty) { await Task.Delay(15); continue; } var success = queue.TryDequeue(out n_item); if (!success || n_item is null) { continue; } lock (console_lock) { if (!(replacement_static_config is null)) { config = replacement_static_config; formatter = config.FormatterFactory(); replacement_static_config = null; } var item = n_item; n_item = null; formatter.PreLog(item); formatter.Format(item); formatter.PostLog(item); if (queue.Count > config.InternalLoggerQueueOverloadThreshold) { item = new LogItem( config, LogLevel.Warning, 0, nameof(SolaceConsoleLogger), "WARNING! LOG BUFFER IS OVERLOADED!", null ); formatter.PreLog(item); formatter.Format(item); formatter.PostLog(item); } } } catch (Exception e) { Console.WriteLine($"ERROR IN SOLACE CONSOLE LOGGER: {e}"); } } Console.ResetColor(); if (config.LogLevel == LogLevel.Trace) { Console.WriteLine("Stopping logger."); } }