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); } } }
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)); }
/// <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); } } } } }
/// <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); } } } }
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); }
/// <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; }