Exemple #1
0
        public static void Setup(string path)
        {
            // "%d[%2%t] %-5p[%-10c] %m %n"
            var pl = new PatternLayout {ConversionPattern = "%c%m%n"};
            pl.ActivateOptions();

            var fileAppender = new FileAppender
            {
                AppendToFile = true,
                LockingModel = new FileAppender.MinimalLock(),
                File = path,
                Layout = pl
            };
            fileAppender.ActivateOptions();

            var bufferingForwardingAppender = new BufferingForwardingAppender
            {
                Lossy = false,
                Fix = FixFlags.None
            };
            bufferingForwardingAppender.AddAppender(fileAppender);
            bufferingForwardingAppender.ActivateOptions();

            var consoleAppender = new ConsoleAppender {Layout = pl};
            consoleAppender.ActivateOptions();

            var hierarchy = (Hierarchy) LogManager.GetRepository();
            hierarchy.Root.RemoveAllAppenders();
            BasicConfigurator.Configure(hierarchy, bufferingForwardingAppender, consoleAppender);
        }
Exemple #2
0
 private static void ConfigureLog4Net()
 {
     if (ConfigurationManager.GetSection("log4net") == null)
     {
         var layout = new SimpleLayout();
         layout.ActivateOptions();
         var consoleAppender = new ConsoleAppender
                                   {
                                       Layout = layout
                                   };
         consoleAppender.AddFilter(new LevelRangeFilter
                                       {
                                           LevelMin = Level.Info,
                                           LevelMax = Level.Fatal,
                                           AcceptOnMatch = false
                                       });
         consoleAppender.AddFilter(
             new LoggerMatchFilter
                 {
                     LoggerToMatch = "Remora",
                     AcceptOnMatch = true
                 }
             );
         consoleAppender.AddFilter(new DenyAllFilter());
         consoleAppender.ActivateOptions();
         BasicConfigurator.Configure(consoleAppender);
     }
     else
     {
         XmlConfigurator.Configure();
     }
 }
        public static void Configure()
        {
            var hierarchy = (Hierarchy)LogManager.GetRepository();
            hierarchy.Root.RemoveAllAppenders();

            // see http://logging.apache.org/log4net/release/sdk/log4net.Layout.PatternLayout.html

            var layout = new PatternLayout
            {
                ConversionPattern = "%date{dd-MMM-yyyy HH:mm:ss}  %-5level  %message%n%exception%n"
            };

            var fileAppender = new RollingFileAppender
            {
                Layout = layout,
                AppendToFile = true,
                File = "log.txt",
                LockingModel = new FileAppender.MinimalLock(),
            };

            var consoleAppender = new ConsoleAppender
            {
                Layout = layout,
            };

            layout.ActivateOptions();

            fileAppender.ActivateOptions();
            log4net.Config.BasicConfigurator.Configure(fileAppender);

            consoleAppender.ActivateOptions();
            log4net.Config.BasicConfigurator.Configure(consoleAppender);
        }
Exemple #4
0
        public static void Setup()
        {
            Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();

            PatternLayout patternLayout = new PatternLayout();
            patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline";
            patternLayout.ActivateOptions();

            RollingFileAppender roller = new RollingFileAppender();
            roller.AppendToFile = false;
            roller.File = @"Logs\EventLog.txt";
            roller.Layout = patternLayout;
            roller.MaxSizeRollBackups = 5;
            roller.MaximumFileSize = "1GB";
            roller.RollingStyle = RollingFileAppender.RollingMode.Size;
            roller.StaticLogFileName = true;
            roller.ActivateOptions();
            hierarchy.Root.AddAppender(roller);

            ConsoleAppender appender = new ConsoleAppender();
            appender.Layout = patternLayout;
            appender.ActivateOptions();
            hierarchy.Root.AddAppender(appender);

            MemoryAppender memory = new MemoryAppender();
            memory.ActivateOptions();
            hierarchy.Root.AddAppender(memory);

            hierarchy.Root.Level = Level.Debug;
            hierarchy.Configured = true;
        }
Exemple #5
0
		public static void BindConsole(PatternLayout layout = null, Level level = null)
		{
			layout = layout ?? new PatternLayout
			{
				ConversionPattern = "%date{ISO8601} %level %logger - %message%newline"
			};

			layout.ActivateOptions();

			var consoleAppender = new ConsoleAppender
			{
				Name = "console",
				Layout = layout
			};

			consoleAppender.ActivateOptions();

			var hierarchy = (Hierarchy)LogManager.GetRepository();

			if (hierarchy.Root.GetAppender("console") != null)
			{
				return;
			}

			hierarchy.Root.AddAppender(consoleAppender);
			hierarchy.Root.Level = level ?? Level.Info;

			hierarchy.Configured = true;
		}
    /// <summary>
    /// Configures the <see cref="FileLogger"/> logger adding the appenders
    /// to the root repository.
    /// </summary>
    public void Configure() {
      // create a new logger into the repository of the current assembly.
      ILoggerRepository root_repository =
        LogManager.GetRepository(Assembly.GetExecutingAssembly());

      Logger nohros_console_logger =
        root_repository.GetLogger("NohrosConsoleLogger") as Logger;

      // create the layout and appender for on error messages.
      PatternLayout layout = new PatternLayout();
      layout.ConversionPattern = layout_pattern_;
      layout.ActivateOptions();

      // create the appender
      ConsoleAppender appender = new ConsoleAppender();
      appender.Name = "NohrosCommonConsoleAppender";
      appender.Layout = layout;
      appender.Target = "Console.Out";
      appender.Threshold = Level.All;
      appender.ActivateOptions();

      nohros_console_logger.Parent.AddAppender(appender);

      root_repository.Configured = true;

      logger = LogManager.GetLogger("NohrosConsoleLogger");
    }
Exemple #7
0
        static void ConfigureLogging(ServerOptions options)
        {
            var layout = new PatternLayout("%date %level - %message%newline");
            layout.ActivateOptions();

            var appenders = new List<IAppender>();
            if (!string.IsNullOrEmpty(options.LogFileDirectory))
            {
                var fileAppender = new FileAppender
                {
                    Layout = layout,
                    Encoding = Encoding.UTF8,
                    File = Path.Combine(options.LogFileDirectory, "orchestrion.log"),
                    AppendToFile = true,
                    LockingModel = new FileAppender.MinimalLock(),
                    ImmediateFlush = true,

                };
                fileAppender.ActivateOptions();
                appenders.Add(fileAppender);
            }

            if (options.ConsoleOutput)
            {
                var consoleAppender = new ConsoleAppender
                {
                    Layout = layout
                };
                consoleAppender.ActivateOptions();
                appenders.Add(consoleAppender);
            }

            BasicConfigurator.Configure(appenders.ToArray());
        }
        public void Configure()
        {
            Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
            hierarchy.Root.RemoveAllAppenders(); /*Remove any other appenders*/

            FileAppender fileAppender = new FileAppender();
            fileAppender.AppendToFile = true;
            fileAppender.LockingModel = new FileAppender.MinimalLock();
            fileAppender.File = _locationProvider.GetFilePath();
            PatternLayout pl = new PatternLayout();
            pl.ConversionPattern = "%d [%2%t] %-5p [%-10c]   %m%n%n";
            pl.ActivateOptions();
            fileAppender.Layout = pl;
            fileAppender.ActivateOptions();

            ConsoleAppender consoleAppender = new ConsoleAppender();
            consoleAppender.Layout = pl;
            consoleAppender.ActivateOptions();

            //            log4net.Config.BasicConfigurator.Configure(fileAppender);
            IAppender[] appenders = {fileAppender, consoleAppender};
            log4net.Config.BasicConfigurator.Configure(appenders);
            var log = LogManager.GetLogger(GetType());
            log.Debug("Logging Configured");
        }
        public void SetUpFixture()
        {
            Util.LogLog.InternalDebugging = true;

            Hierarchy hierarchy = (Hierarchy) LogManager.GetRepository();
            PatternLayout patternLayout = new PatternLayout { ConversionPattern = "%d [%t] %-5p %m%n" };

            patternLayout.ActivateOptions();

            TraceAppender tracer = new TraceAppender { Layout = patternLayout };

            tracer.ActivateOptions();

            hierarchy.Root.AddAppender(tracer);

            ConsoleAppender console = new ConsoleAppender
                                          {
                                              Name = "console",
                                              Layout = patternLayout,
                                              Target = "Console.Out",
                                              Threshold = Level.All,
                                          };

            console.ActivateOptions();

            hierarchy.Root.AddAppender(console);

            RollingFileAppender rollingFile = new RollingFileAppender
                                                  {
                                                      Name = "file",
                                                      Layout = patternLayout,
                                                      AppendToFile = true,
                                                      RollingStyle = RollingFileAppender.RollingMode.Size,
                                                      MaxSizeRollBackups = 4,
                                                      MaximumFileSize = "100KB",
                                                      StaticLogFileName = true,
                                                      LockingModel = new FileAppender.MinimalLock(),
                                                      File = "logs\\logFile.txt",
                                                  };

            rollingFile.ActivateOptions();

            hierarchy.Root.AddAppender(rollingFile);

            RollbarAppender rollbar = new RollbarAppender
                                          {
                                              Name = "rollbar",
                                              Layout = patternLayout,
                                              AccessToken = "3203880e148b43b4b1a14430fb41957a",
                                              Threshold = Level.Notice,
                                          };

            rollbar.ActivateOptions();

            hierarchy.Root.AddAppender(rollbar);

            hierarchy.Root.Level = Level.All;
            hierarchy.Configured = true;
        }
 static DataTests()
 {
     var layout = new PatternLayout("%-6timestamp %-5level - %message%newline");
     var appender = new ConsoleAppender { Layout = layout };
     layout.ActivateOptions();
     appender.ActivateOptions();
     BasicConfigurator.Configure(appender);
 }
Exemple #11
0
 public static void LogToConsoleAnd(string logPath)
 {
     var layout = new PatternLayout("%-5level [%d{HH:mm:ss}] %-20.20logger{1}: %message%newline");
     var file = new RollingFileAppender {AppendToFile = false, File = logPath, Layout = layout, Encoding = Encoding.UTF8};
     file.ActivateOptions();
     var console = new ConsoleAppender {Layout = layout};
     console.ActivateOptions();
     BasicConfigurator.Configure(console, file);
 }
		public static void SetUpConsole(string pattern = DefaultPattern)
		{
			var layout = new PatternLayout(pattern);
			var appender = new ConsoleAppender
			{
				Layout = layout,
				Threshold = Level.Debug
			};
			layout.ActivateOptions();
			appender.ActivateOptions();
			BasicConfigurator.Configure(appender);
		}
Exemple #13
0
        private static ConsoleAppender GetConsoleAppender()
        {
            var consoleAppender = new log4net.Appender.ConsoleAppender()
            {
                Name      = "ConsoleAppender",
                Layout    = GetPatternLayout(),
                Threshold = Level.All
            };

            consoleAppender.ActivateOptions();
            return(consoleAppender);
        }
		public static void Main(string[] args)
		{
			var appender = new ConsoleAppender() {Layout = new PatternLayout("%-5p %x %m%n")};
			appender.ActivateOptions();

			BasicConfigurator.Configure(appender);

			var program = new Program(new DefaultConsole());
			ExitCode exitCode = program.Run(args);

			Environment.Exit((int) exitCode);
		}
        private static ConsoleAppender GetConsoleAppender()
        {
            var consoleAppender = new ConsoleAppender()
            {
                Name = "ConsoleAppender",
                Layout = GetPatternLayout(),
                Threshold = Level.Info
            };

            consoleAppender.ActivateOptions();
            return consoleAppender;
        }
        private static ConsoleAppender GetConsoleAppender()
        {
            var appender = new ConsoleAppender
            {
                Name = "Console",
                Layout = new SimpleLayout(),
                Threshold = Level.Debug
            };

            appender.ActivateOptions();
            return appender;
        }
 internal static ConsoleAppender BuildConsoleLog(LogOptions options)
 {
     var layout = new PatternLayout
         {
             ConversionPattern = options.Pattern
         };
     layout.ActivateOptions();
     var appender = new ConsoleAppender
         {
             Layout = layout
         };
     appender.ActivateOptions();
     return appender;
 }
 public static ILog CreateConsole(string loggerName = null,
     [CallerMemberName] string caller = null)
 {
     var consoleAppender = new ConsoleAppender();
     var pl = new PatternLayout()
     {
         ConversionPattern = _conversionPattern,
     };
     pl.ActivateOptions();
     consoleAppender.Layout = pl;
     consoleAppender.ActivateOptions();
     LogManager.ResetConfiguration();
     log4net.Config.BasicConfigurator.Configure(consoleAppender);
     return LogManager.GetLogger(loggerName ?? caller);
 }
Exemple #19
0
    static async Task AsyncMain()
    {
        #region ConfigureLog4Net
        PatternLayout layout = new PatternLayout
        {
            ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n"
        };
        layout.ActivateOptions();
        ConsoleAppender consoleAppender = new ConsoleAppender
        {
            Threshold = Level.Info,
            Layout = layout
        };
        // Note that ActivateOptions is required in NSB 5 and above
        consoleAppender.ActivateOptions();
        BasicConfigurator.Configure(consoleAppender);
        #endregion

        #region UseConfig

        LogManager.Use<Log4NetFactory>();

        // Then continue with your bus configuration
        BusConfiguration busConfiguration = new BusConfiguration();
        busConfiguration.EndpointName("Samples.Logging.Log4NetCustom");

        #endregion

        busConfiguration.UseSerialization<JsonSerializer>();
        busConfiguration.EnableInstallers();
        busConfiguration.UsePersistence<InMemoryPersistence>();
        busConfiguration.SendFailedMessagesTo("error");

        IEndpointInstance endpoint = await Endpoint.Start(busConfiguration);
        try
        {
            IBusSession busSession = endpoint.CreateBusSession();
            await busSession.SendLocal(new MyMessage());
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
        finally
        {
            await endpoint.Stop();
        }
    }
    public static void ConfigureLogging(Level threshold)
    {
        var layout = new PatternLayout
        {
            ConversionPattern = "%d %-5p %c - %m%n"
        };
        layout.ActivateOptions();
        var appender = new ConsoleAppender
        {
            Layout = layout,
            Threshold = threshold
        };
        appender.ActivateOptions();

        BasicConfigurator.Configure(appender);

        LogManager.Use<Log4NetFactory>();
    }
    void IWantCustomLogging.Init()
    {
        PatternLayout layout = new PatternLayout
                     {
                         ConversionPattern = "%d %-5p %c - %m%n"
                     };
        layout.ActivateOptions();
        ConsoleAppender appender = new ConsoleAppender
                       {
                           Layout = layout,
                           Threshold = Level.Info
                       };
        appender.ActivateOptions();

        BasicConfigurator.Configure(appender);

        SetLoggingLibrary.Log4Net();
    }
    public static void ConfigureLogging(Level threshold)
    {
        PatternLayout layout = new PatternLayout
                     {
                         ConversionPattern = "%d %-5p %c - %m%n"
                     };
        layout.ActivateOptions();
        ConsoleAppender appender = new ConsoleAppender
                       {
                           Layout = layout,
                           Threshold = threshold
                       };
        appender.ActivateOptions();

        BasicConfigurator.Configure(appender);

        SetLoggingLibrary.Log4Net();
    }
Exemple #23
0
        private static AppenderSkeleton CreateConsoleAppender()
        {
            var consoleAppender = new ConsoleAppender
            {
                Threshold = Level.All,
                Layout = new PatternLayout {ConversionPattern = "[%t] %-5p - %m%n"}
            };

            //consoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors { Level = Level.Error, 
            //    ForeColor = ColoredConsoleAppender.Colors.Red | ColoredConsoleAppender.Colors.HighIntensity });
            //consoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors { Level = Level.Fatal, 
            //    ForeColor = ColoredConsoleAppender.Colors.White | ColoredConsoleAppender.Colors.HighIntensity, 
            //    BackColor = ColoredConsoleAppender.Colors.Red });

            consoleAppender.ActivateOptions();

            return consoleAppender;
        }
    public EndpointConfig()
    {
        PatternLayout layout = new PatternLayout
        {
            ConversionPattern = "%d %-5p %c - %m%n"
        };
        layout.ActivateOptions();
        ConsoleAppender appender = new ConsoleAppender
        {
            Layout = layout,
            Threshold = Level.Info
        };
        appender.ActivateOptions();

        BasicConfigurator.Configure(appender);

        LogManager.Use<Log4NetFactory>();
    }
        /// <summary>
        /// Initializes <see cref="Common.Logging.LogManager"/> with a <see cref="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter"/> after
        /// having configured log4net to emit low levels logs.
        /// </summary>
        /// <param name="appLogDirectory">The directory for low leveel logs.</param>
        /// <param name="dumpToConsole">True to log all traces into the console.</param>
        public static void Initialize( string appLogDirectory, bool dumpToConsole )
        {
            string logPattern = "%date [%thread] %-5level %logger - %message%newline";
            _appLogDirectory = appLogDirectory;
            if( !Directory.Exists( appLogDirectory ) ) Directory.CreateDirectory( appLogDirectory );

            _hierarchy = (Hierarchy)log4net.LogManager.GetRepository();

            PatternLayout patternLayout = new PatternLayout();
            patternLayout.ConversionPattern = logPattern;
            patternLayout.ActivateOptions();

            if( dumpToConsole )
            {
                ConsoleAppender console = new ConsoleAppender();
                console.Layout = patternLayout;
                console.ActivateOptions();
                console.Threshold = Level.All;
                _hierarchy.Root.AddAppender( console );
            }

            _roller = new RollingFileAppender();
            _roller.Layout = patternLayout;
            _roller.AppendToFile = true;
            _roller.RollingStyle = RollingFileAppender.RollingMode.Size;
            _roller.MaxSizeRollBackups = 4;
            _roller.MaximumFileSize = "100KB";
            _roller.StaticLogFileName = true;
            _roller.File = Path.Combine( _appLogDirectory, "LowLevel.log" );
            _roller.ActivateOptions();
            _hierarchy.Root.AddAppender( _roller );

            _hierarchy.Configured = true;

            NameValueCollection properties = new NameValueCollection();
            properties["configType"] = "EXTERNAL";
            Common.Logging.LogManager.Adapter = new Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter( properties );

            // Registers to inject last application logs into crash logs.
            AppRecoveryManager.ApplicationCrashed += new System.EventHandler<ApplicationCrashedEventArgs>( OnApplicationCrash );

            _initialized = true;
        }
        public Log4NetFiltering()
        {
            #region Log4NetFilterUsage

            ConsoleAppender appender = new ConsoleAppender
            {
                Threshold = Level.Debug,
                Layout = new SimpleLayout(),
            };

            appender.AddFilter(new NServiceBusLogFilter());
            appender.ActivateOptions();

            BasicConfigurator.Configure(appender);

            NServiceBus.Logging.LogManager.Use<Log4NetFactory>();

            #endregion
        }
Exemple #27
0
        static void ConfigureLog4Net(StartupEventArgs e)
        {
            var appenders = new List<IAppender>();

            var consoleAppender = new ConsoleAppender
                                      {
                                          Layout = new PatternLayout("%date [%thread] %level %logger %ndc - %message%newline")
                                      };
            consoleAppender.ActivateOptions();
            appenders.Add(consoleAppender);

            var errorFileAppender = new RollingFileAppender
            {
                File = MixPlannerPaths.ErrorLogFile,
                Layout = new PatternLayout("%date [%thread] %level %logger %ndc - %message%newline"),
                Threshold = Level.Warn,
                LockingModel = new FileAppender.MinimalLock(),
                MaxSizeRollBackups = 10, // number of files
                MaximumFileSize = "10MB",
                StaticLogFileName = true // always write to the latest
            };
            errorFileAppender.ActivateOptions();
            appenders.Add(errorFileAppender);

            if (e.Args.Contains("/debug", StringComparer.CurrentCultureIgnoreCase))
            {
                var debugFileAppender = new RollingFileAppender
                {
                    File = MixPlannerPaths.DebugLogFile,
                    Layout = new PatternLayout("%date [%thread] %level %logger %ndc - %message%newline"),
                    Threshold = Level.Debug,
                    LockingModel = new FileAppender.MinimalLock(),
                    MaxSizeRollBackups = 10, // number of files
                    MaximumFileSize = "10MB",
                    StaticLogFileName = true // always write to the latest
                };
                debugFileAppender.ActivateOptions();
                appenders.Add(debugFileAppender);
            }

            BasicConfigurator.Configure(appenders.ToArray());
        }
Exemple #28
0
        internal static IDisposable InitLog4Net()
        {
            var asyncAppender = new AsyncAppender();
            var appender = new ConsoleAppender
                               {
                                   Layout =
                                       new PatternLayout(
                                       string.Format("run#{0}: %r %-5level - %message (%logger) [%thread]%newline", counter++)),
                                   Threshold = Level.Trace
                               };
            appender.ActivateOptions();
            asyncAppender.AddAppender(appender);
            asyncAppender.ActivateOptions();

            // Configure the root logger.
            var h = (log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository();
            var rootLogger = h.Root;
            rootLogger.Level = h.LevelMap["TRACE"];
            BasicConfigurator.Configure(appender);
            return new LogWrapper();
        }
    static void Main()
    {
        Console.Title = "Samples.Logging.Log4NetCustom";
        #region ConfigureLog4Net
        PatternLayout layout = new PatternLayout
        {
            ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n"
        };
        layout.ActivateOptions();
        ConsoleAppender consoleAppender = new ConsoleAppender
        {
            Threshold = Level.Info,
            Layout = layout
        };
        // Note that ActivateOptions is required in NSB 5 and above
        consoleAppender.ActivateOptions();
        BasicConfigurator.Configure(consoleAppender);
        #endregion

        #region UseConfig

        LogManager.Use<Log4NetFactory>();

        // Then continue with your bus configuration
        BusConfiguration busConfiguration = new BusConfiguration();
        busConfiguration.EndpointName("Samples.Logging.Log4NetCustom");

        #endregion

        busConfiguration.UseSerialization<JsonSerializer>();
        busConfiguration.EnableInstallers();
        busConfiguration.UsePersistence<InMemoryPersistence>();

        using (IBus bus = Bus.Create(busConfiguration).Start())
        {
            bus.SendLocal(new MyMessage());
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
    }
    Usage()
    {
        #region Log4NetInCode

        var layout = new PatternLayout
        {
            ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n"
        };
        layout.ActivateOptions();
        var consoleAppender = new ConsoleAppender
        {
            Threshold = Level.Debug,
            Layout = layout
        };
        // Note that ActivateOptions is required in NSB 5 and above
        consoleAppender.ActivateOptions();

        BasicConfigurator.Configure(consoleAppender);

        LogManager.Use<Log4NetFactory>();

        #endregion
    }
        /// <summary>
        /// Start logging to the console.
        /// </summary>
        public static void StartConsoleLogging()
        {
#if logging
            ILoggerRepository repository = GetRootRepository();

            // Create the layout
            PatternLayout layout = new PatternLayout();
            layout.ConversionPattern = PatternLayout.DetailConversionPattern;
            layout.ActivateOptions();

            // Create the appender
            ConsoleAppender appender = new ConsoleAppender();
            appender.Layout = layout;
            appender.ActivateOptions();

            // Now use it on the root repository
            IBasicRepositoryConfigurator configurableRepository = repository as IBasicRepositoryConfigurator;
            if (configurableRepository != null)
            {
                configurableRepository.Configure(appender);
            }
#endif
        }
Exemple #32
0
        public void BasicConfig()
        {
            PatternLayout layout = new PatternLayout();

            layout.ConversionPattern = "%date [%thread] %-5level %C{2} %M - %message%newline";
            layout.ActivateOptions();

            //the ColoredConsoleAppender is not available in mono so use a standard console appender
#if __MonoCS__
            log4net.Appender.ConsoleAppender appender = new log4net.Appender.ConsoleAppender();
            appender.Layout = layout;
            appender.ActivateOptions();

            BasicConfigurator.Configure(appender);
#else
            log4net.Appender.ColoredConsoleAppender appender = new log4net.Appender.ColoredConsoleAppender();
            appender.Layout = layout;

            ColoredConsoleAppender.LevelColors errorMapping = new ColoredConsoleAppender.LevelColors();
            errorMapping.BackColor = ColoredConsoleAppender.Colors.HighIntensity | ColoredConsoleAppender.Colors.Red;
            errorMapping.ForeColor = ColoredConsoleAppender.Colors.White;
            errorMapping.Level     = Level.Error;
            ColoredConsoleAppender.LevelColors infoMapping = new ColoredConsoleAppender.LevelColors();
            infoMapping.ForeColor = ColoredConsoleAppender.Colors.Green;
            infoMapping.Level     = Level.Info;
            ColoredConsoleAppender.LevelColors debugMapping = new ColoredConsoleAppender.LevelColors();
            debugMapping.ForeColor = ColoredConsoleAppender.Colors.Blue;
            debugMapping.Level     = Level.Debug;
            appender.AddMapping(errorMapping);
            appender.AddMapping(infoMapping);
            appender.AddMapping(debugMapping);

            appender.ActivateOptions();

            BasicConfigurator.Configure(appender);
#endif
        }