Пример #1
0
 private static void set_logging_level_debug_when_debug(ConfigurationPropertyHolder configuration_property_holder)
 {
     if (configuration_property_holder.Debug)
     {
         ILoggerRepository log_repository = LogManager.GetRepository(Assembly.GetCallingAssembly());
         log_repository.Threshold = Level.Debug;
         foreach (log4net.Core.ILogger log in log_repository.GetCurrentLoggers())
         {
             var logger = log as log4net.Repository.Hierarchy.Logger;
             if (logger != null)
             {
                 logger.Level = Level.Debug;
             }
         }
     }
 }
        public static void configure_additional_log_file(string logFileLocation)
        {
            if (string.IsNullOrWhiteSpace(logFileLocation))
            {
                return;
            }

            var logDirectory = Path.GetDirectoryName(logFileLocation);
            var logFileName  = Path.GetFileNameWithoutExtension(logFileLocation);

            if (!string.IsNullOrWhiteSpace(logDirectory) && !Directory.Exists(logDirectory))
            {
                Directory.CreateDirectory(logDirectory);
            }
            var layout = new PatternLayout
            {
                ConversionPattern = "%date %property{pid} [%-5level] - %message%newline"
            };

            layout.ActivateOptions();

            var app = new FileAppender()
            {
                Name         = "{0}.{1}.log.appender".format_with(ApplicationParameters.Name, logFileName),
                File         = logFileLocation,
                Layout       = layout,
                AppendToFile = true,
                LockingModel = new FileAppender.MinimalLock(),
            };

            app.ActivateOptions();

            ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetCallingAssembly().UnderlyingType);

            foreach (ILogger log in logRepository.GetCurrentLoggers().Where(l => !l.Name.is_equal_to("Trace")).or_empty_list_if_null())
            {
                var logger = log as Logger;
                if (logger != null)
                {
                    logger.AddAppender(app);
                }
            }
        }
Пример #3
0
        private void HandleLogLevel(string[] cmd)
        {
            if (null == m_consoleAppender)
            {
                MainConsole.Instance.Fatal("No appender named Console found (see the log4net config file for this executable)!");
                return;
            }

            string rawLevel = cmd[3];

            ILoggerRepository repository   = LogManager.GetRepository();
            Level             consoleLevel = repository.LevelMap[rawLevel];

            if (consoleLevel != null)
            {
                m_consoleAppender.Threshold = consoleLevel;
                repository.Threshold        = consoleLevel;
                foreach (ILogger log in repository.GetCurrentLoggers())
                {
                    log.Level = consoleLevel;
                }
            }
            else
            {
                string forms = "";
                for (int i = 0; i < repository.LevelMap.AllLevels.Count; i++)
                {
                    forms += repository.LevelMap.AllLevels[i].Name;
                    if (i + 1 != repository.LevelMap.AllLevels.Count)
                    {
                        forms += ", ";
                    }
                }
                MainConsole.Instance.Fatal(
                    String.Format(
                        "{0} is not a valid logging level.  Valid logging levels are " + forms,
                        rawLevel));
            }

            MainConsole.Instance.MaxLogLevel = m_consoleAppender.Threshold;
            MainConsole.Instance.Fatal(String.Format("Console log level is {0}", m_consoleAppender.Threshold));
        }
Пример #4
0
        /// <summary>
        /// Sets a named trace logger to Debug level when enable trace is true.
        /// </summary>
        /// <param name="enableTrace">if set to <c>true</c> [enable trace].</param>
        /// <param name="traceLoggerName">Name of the trace logger.</param>
        public static void set_trace_logger_when_trace(bool enableTrace, string traceLoggerName)
        {
            if (enableTrace)
            {
                System.Diagnostics.Trace.Listeners.Clear();
                System.Diagnostics.Trace.AutoFlush = true;
                System.Diagnostics.Trace.Listeners.Add(new TraceLog());

                var fileAppenders = new List <AppenderSkeleton>();

                ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetCallingAssembly().UnderlyingType);
                foreach (var append in logRepository.GetAppenders())
                {
                    var appender = append as AppenderSkeleton;
                    if (appender != null && appender.Name.is_equal_to(traceLoggerName))
                    {
                        appender.ClearFilters();
                        var minLevel = Level.Debug;
                        appender.AddFilter(new log4net.Filter.LevelRangeFilter {
                            LevelMin = minLevel, LevelMax = Level.Fatal
                        });
                    }

                    if (appender != null && appender.GetType() == typeof(RollingFileAppender))
                    {
                        fileAppenders.Add(appender);
                    }
                }

                foreach (ILogger log in logRepository.GetCurrentLoggers().Where(l => l.Name.is_equal_to("Trace")).or_empty_list_if_null())
                {
                    var logger = log as Logger;
                    if (logger != null)
                    {
                        foreach (var appender in fileAppenders.or_empty_list_if_null())
                        {
                            logger.AddAppender(appender);
                        }
                    }
                }
            }
        }
Пример #5
0
        /// <summary>
        ///   Adds a file appender to all current loggers. Only runs one time.
        /// </summary>
        /// <param name="outputDirectory">The output directory.</param>
        private static void set_file_appender(string outputDirectory)
        {
            if (!_alreadyConfiguredFileAppender)
            {
                _alreadyConfiguredFileAppender = true;

                var layout = new PatternLayout
                {
                    ConversionPattern = "%date [%-5level] - %message%newline"
                };
                layout.ActivateOptions();

                var lockingModel = new FileAppender.MinimalLock();

                var app = new RollingFileAppender
                {
                    Name               = "{0}.changes.log.appender".format_with(ApplicationParameters.Name),
                    File               = Path.Combine(Path.GetFullPath(outputDirectory), ApplicationParameters.LoggingFile),
                    Layout             = layout,
                    AppendToFile       = true,
                    RollingStyle       = RollingFileAppender.RollingMode.Size,
                    MaxFileSize        = 1024 * 1024,
                    MaxSizeRollBackups = 10,
                    LockingModel       = lockingModel,
                };
                app.ActivateOptions();

                ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetCallingAssembly().UnderlyingType);
                foreach (ILogger log in logRepository.GetCurrentLoggers())
                {
                    var logger = log as Logger;
                    if (logger != null)
                    {
                        logger.AddAppender(app);
                    }
                }
            }
        }
        /// <summary>
        ///   Adds a file appender to all current loggers. Only runs one time.
        /// </summary>
        /// <param name="outputDirectory">The output directory.</param>
        /// <param name="excludeLoggerNames">Loggers, such as a trace logger, to exclude from file appender.</param>
        private static void set_file_appender(string outputDirectory, params string[] excludeLoggerNames)
        {
            if (excludeLoggerNames == null)
            {
                excludeLoggerNames = new string[] {}
            }
            ;

            if (!_alreadyConfiguredFileAppender)
            {
                _alreadyConfiguredFileAppender = true;

                var layout = new PatternLayout
                {
                    ConversionPattern = "%date %property{pid} [%-5level] - %message%newline"
                };
                layout.ActivateOptions();

                var app = new RollingFileAppender
                {
                    Name                         = "{0}.changes.log.appender".format_with(ApplicationParameters.Name),
                    File                         = Path.Combine(Path.GetFullPath(outputDirectory), ApplicationParameters.LoggingFile),
                    Layout                       = layout,
                    AppendToFile                 = true,
                    RollingStyle                 = RollingFileAppender.RollingMode.Size,
                    MaxFileSize                  = 1024 * 1024 * 10,
                    MaxSizeRollBackups           = 50,
                    LockingModel                 = new FileAppender.MinimalLock(),
                    PreserveLogFileNameExtension = true,
                };
                app.ActivateOptions();

                var infoOnlyAppender = new RollingFileAppender
                {
                    Name                         = _summaryLogAppenderName,
                    File                         = Path.Combine(Path.GetFullPath(outputDirectory), ApplicationParameters.LoggingSummaryFile),
                    Layout                       = layout,
                    AppendToFile                 = true,
                    RollingStyle                 = RollingFileAppender.RollingMode.Size,
                    MaxFileSize                  = 1024 * 1024 * 10,
                    MaxSizeRollBackups           = 50,
                    LockingModel                 = new FileAppender.MinimalLock(),
                    PreserveLogFileNameExtension = true,
                };
                infoOnlyAppender.AddFilter(new LevelRangeFilter {
                    LevelMin = Level.Info, LevelMax = Level.Fatal
                });
                infoOnlyAppender.ActivateOptions();

                ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetCallingAssembly().UnderlyingType);
                foreach (ILogger log in logRepository.GetCurrentLoggers().Where(l => excludeLoggerNames.All(name => !l.Name.is_equal_to(name))).or_empty_list_if_null())
                {
                    var logger = log as Logger;
                    if (logger != null)
                    {
                        logger.AddAppender(app);
                        logger.AddAppender(infoOnlyAppender);
                    }
                }
            }
        }
Пример #7
0
        private void SetUpConsole(IConfigSource config, IRegistryCore registry)
        {
            List <ICommandConsole> Plugins = AuroraModuleLoader.PickupModules <ICommandConsole>();

            foreach (ICommandConsole plugin in Plugins)
            {
                plugin.Initialize(config, registry.RequestModuleInterface <ISimulationBase>());
            }

            List <INotificationService> NotificationPlugins = AuroraModuleLoader.PickupModules <INotificationService>();

            foreach (INotificationService plugin in NotificationPlugins)
            {
                plugin.Init(config, registry);
            }

            ILoggerRepository repository = LogManager.GetRepository();

            IAppender[] appenders = repository.GetAppenders();
            foreach (IAppender appender in appenders)
            {
                if (appender.Name == "Console")
                {
                    m_consoleAppender = (OpenSimAppender)appender;
                    break;
                }
            }

            if (null != m_consoleAppender)
            {
                m_consoleAppender.Console = MainConsole.Instance;
                // If there is no threshold set then the threshold is effectively everything.
                if (null == m_consoleAppender.Threshold)
                {
                    m_consoleAppender.Threshold = Level.All;
                }
                repository.Threshold = m_consoleAppender.Threshold;
                foreach (ILogger log in repository.GetCurrentLoggers())
                {
                    log.Level = m_consoleAppender.Threshold;
                }
            }
            IAppender logFileAppender = null;

            foreach (IAppender appender in appenders)
            {
                if (appender.Name == "LogFileAppender")
                {
                    logFileAppender = appender;
                }
            }

            if (logFileAppender != null)
            {
                if (logFileAppender is FileAppender)
                {
                    FileAppender appender      = (FileAppender)logFileAppender;
                    IConfig      startupConfig = config.Configs["Startup"];
                    string       fileName      = startupConfig.GetString("LogFile", String.Empty);
                    if (fileName != String.Empty)
                    {
                        appender.File = fileName;
                        appender.ActivateOptions();
                    }
                }
            }
            if (MainConsole.Instance == null)
            {
                m_log.Info("[Console]: No Console located");
                return;
            }

            MainConsole.Instance.MaxLogLevel = m_consoleAppender.Threshold;
            if (m_consoleAppender != null)
            {
                MainConsole.Instance.Fatal(String.Format("[Console]: Console log level is {0}", m_consoleAppender.Threshold));
            }

            MainConsole.Instance.Commands.AddCommand("set log level", "set log level [level]", "Set the console logging level", HandleLogLevel);

            MainConsole.Instance.Commands.AddCommand("get log level", "get log level", "Returns the current console logging level", HandleGetLogLevel);
        }
Пример #8
0
        /// <summary>
        /// Find the console plugin and initialize the logger for it
        /// </summary>
        public virtual void SetUpConsole()
        {
            List <ICommandConsole> Plugins = AuroraModuleLoader.PickupModules <ICommandConsole>();

            foreach (ICommandConsole plugin in Plugins)
            {
                plugin.Initialize("Region", ConfigSource, this);
            }

            m_console = m_applicationRegistry.RequestModuleInterface <ICommandConsole>();
            if (m_console == null)
            {
                m_console = new LocalConsole();
            }
            ILoggerRepository repository = LogManager.GetRepository();

            IAppender[] appenders = repository.GetAppenders();
            foreach (IAppender appender in appenders)
            {
                if (appender.Name == "Console")
                {
                    m_consoleAppender = (OpenSimAppender)appender;
                    break;
                }
            }

            foreach (IAppender appender in appenders)
            {
                if (appender.Name == "LogFileAppender")
                {
                    m_logFileAppender = appender;
                }
            }

            if (null != m_consoleAppender)
            {
                m_consoleAppender.Console = m_console;
                // If there is no threshold set then the threshold is effectively everything.
                if (null == m_consoleAppender.Threshold)
                {
                    m_consoleAppender.Threshold = Level.All;
                }
                repository.Threshold = m_consoleAppender.Threshold;
                foreach (ILogger log in repository.GetCurrentLoggers())
                {
                    log.Level = m_consoleAppender.Threshold;
                }
                m_log.Fatal(String.Format("[Console]: Console log level is {0}", m_consoleAppender.Threshold));
            }

            IConfig startupConfig = m_config.Configs["Startup"];

            if (m_logFileAppender != null)
            {
                if (m_logFileAppender is log4net.Appender.FileAppender)
                {
                    log4net.Appender.FileAppender appender = (log4net.Appender.FileAppender)m_logFileAppender;
                    string fileName = startupConfig.GetString("LogFile", String.Empty);
                    if (fileName != String.Empty)
                    {
                        appender.File = fileName;
                        appender.ActivateOptions();
                    }
                }
            }

            MainConsole.Instance = m_console;
        }