Ejemplo n.º 1
0
        /// <summary>
        /// Turns on all logging for the system.
        /// </summary>
        private void TurnOnLogging()
        {
            log4net.Repository.ILoggerRepository[] repositories = log4net.LogManager.GetAllRepositories();
            IList <IAppender> toRemove;

            // Configure all loggers to be at the debug level.
            foreach (log4net.Repository.ILoggerRepository repository in repositories)
            {
                repository.Threshold = repository.LevelMap["DEBUG"];
                log4net.Repository.Hierarchy.Hierarchy hier = (log4net.Repository.Hierarchy.Hierarchy)repository;
                log4net.Core.ILogger[] loggers = hier.GetCurrentLoggers();
                foreach (log4net.Core.ILogger logger in loggers)
                {
                    log4net.Repository.Hierarchy.Logger log = (log4net.Repository.Hierarchy.Logger)logger;
                    log.Level = hier.LevelMap["DEBUG"];
                    log.AddAppender(new NullAppender());

                    toRemove = new List <IAppender>();
                    foreach (var appender in log.Appenders)
                    {
                        if (appender.GetType() != typeof(NullAppender))
                        {
                            toRemove.Add(appender);
                        }
                    }

                    foreach (IAppender appender in toRemove)
                    {
                        log.RemoveAppender(appender);
                    }
                }
            }

            // Configure the root logger.
            log4net.Repository.Hierarchy.Hierarchy h          = (log4net.Repository.Hierarchy.Hierarchy)log4net.LogManager.GetRepository();
            log4net.Repository.Hierarchy.Logger    rootLogger = h.Root;
            rootLogger.Level = h.LevelMap["DEBUG"];
            rootLogger.AddAppender(new NullAppender());

            toRemove = new List <IAppender>();
            foreach (var appender in rootLogger.Appenders)
            {
                if (appender.GetType() != typeof(NullAppender))
                {
                    toRemove.Add(appender);
                }
            }

            foreach (IAppender appender in toRemove)
            {
                rootLogger.RemoveAppender(appender);
            }
        }
        private static void ShutdownStartupLogAppender(log4netLogger logger)
        {
            var startupAppender = logger.GetAppender(STARTUP_APPENDER_NAME) as MemoryAppender;

            if (startupAppender != null)
            {
                LoggingEvent[] events = startupAppender.GetEvents();
                logger.RemoveAppender(startupAppender);

                if (events != null)
                {
                    foreach (LoggingEvent logEvent in events)
                    {
                        logger.Log(logEvent.Level, logEvent.MessageObject, null);
                    }
                }
            }
        }