public static void SetupLogging() { var hierarchy = (log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository(); var patternLayout = new PatternLayout(); patternLayout.ConversionPattern = "[%05thread] %-5level %20logger - %message%newline"; patternLayout.ActivateOptions(); var console = new ManagedColoredConsoleAppender(); var TRACE = new ManagedColoredConsoleAppender.LevelColors(); TRACE.Level = Level.Trace; TRACE.ForeColor = ConsoleColor.White; var DEBUG = new ManagedColoredConsoleAppender.LevelColors(); DEBUG.Level = Level.Debug; DEBUG.ForeColor = ConsoleColor.Green; var INFO = new ManagedColoredConsoleAppender.LevelColors(); INFO.Level = Level.Info; INFO.ForeColor = ConsoleColor.Cyan; var WARN = new ManagedColoredConsoleAppender.LevelColors(); WARN.Level = Level.Warn; WARN.ForeColor = ConsoleColor.Yellow; var ERROR = new ManagedColoredConsoleAppender.LevelColors(); ERROR.Level = Level.Error; ERROR.ForeColor = ConsoleColor.Magenta; var FATAL = new ManagedColoredConsoleAppender.LevelColors(); FATAL.Level = Level.Fatal; FATAL.ForeColor = ConsoleColor.Red; console.AddMapping(TRACE); console.AddMapping(DEBUG); console.AddMapping(INFO); console.AddMapping(WARN); console.AddMapping(ERROR); console.AddMapping(FATAL); console.ActivateOptions(); console.Layout = patternLayout; hierarchy.Root.AddAppender(console); hierarchy.Root.Level = Level.Trace; hierarchy.Configured = true; }
private static void configure_info_logging_colors() { try { // configure INFO on same as current background color and foreground colors var bgColor = Console.BackgroundColor; var fgColor = Console.ForegroundColor; ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetCallingAssembly().UnderlyingType); foreach (var append in logRepository.GetAppenders().Where(a => a.Name.is_equal_to(NORMAL_LOGGING_COLORED_APPENDER)).or_empty_list_if_null()) { var appender = append as ManagedColoredConsoleAppender; if (appender != null) { var infoMapping = new ManagedColoredConsoleAppender.LevelColors { Level = Level.Info, BackColor = bgColor, ForeColor = fgColor, }; appender.AddMapping(infoMapping); // make sure warnings can be clearly seen if (bgColor == ConsoleColor.White || bgColor == ConsoleColor.Gray || bgColor == ConsoleColor.Yellow || bgColor == ConsoleColor.DarkYellow || bgColor == ConsoleColor.DarkCyan ) { var warnMapping = new ManagedColoredConsoleAppender.LevelColors { Level = Level.Warn, BackColor = ConsoleColor.Black, ForeColor = ConsoleColor.Yellow, }; appender.AddMapping(warnMapping); } // make sure errors can be clearly seen if (bgColor == ConsoleColor.Red || bgColor == ConsoleColor.DarkRed || bgColor == ConsoleColor.Yellow || bgColor == ConsoleColor.DarkYellow || bgColor == ConsoleColor.DarkCyan || bgColor == ConsoleColor.DarkGray || bgColor == ConsoleColor.DarkGreen || bgColor == ConsoleColor.Blue ) { var errorMapping = new ManagedColoredConsoleAppender.LevelColors { Level = Level.Error, BackColor = ConsoleColor.Black, ForeColor = ConsoleColor.Red, }; appender.AddMapping(errorMapping); } appender.ActivateOptions(); } } foreach (var append in logRepository.GetAppenders().Where(a => a.Name.is_equal_to(IMPORTANT_LOGGING_COLORED_APPENDER)).or_empty_list_if_null()) { var appender = append as ManagedColoredConsoleAppender; if (appender != null) { // add black based on current background color if (bgColor == ConsoleColor.White || bgColor == ConsoleColor.Gray || bgColor == ConsoleColor.Yellow || bgColor == ConsoleColor.DarkYellow || bgColor == ConsoleColor.DarkCyan || bgColor == ConsoleColor.DarkGray || bgColor == ConsoleColor.DarkGreen || bgColor == ConsoleColor.Green || bgColor == ConsoleColor.Cyan || bgColor == ConsoleColor.Magenta ) { var infoMapping = new ManagedColoredConsoleAppender.LevelColors { Level = Level.Info, BackColor = ConsoleColor.Black, ForeColor = ConsoleColor.Green, }; appender.AddMapping(infoMapping); var warnMapping = new ManagedColoredConsoleAppender.LevelColors { Level = Level.Warn, BackColor = ConsoleColor.Black, ForeColor = ConsoleColor.Magenta, }; appender.AddMapping(warnMapping); appender.ActivateOptions(); } } } } catch (Exception) { // ignore this and move on } }