Esempio n. 1
0
        public static void Initialize(string logfilePath, string optionalLog4NetConfigPath)
        {
            // When interactice, also activate logging to the console.
            if (Environment.UserInteractive)
            {
                BasicConfigurator.Configure();
            }

            // Use a full-featured log4net log4net configuration file it it exist, otherwise
            // use a simple hardcoded default.
            if (string.IsNullOrWhiteSpace(optionalLog4NetConfigPath) || !File.Exists(optionalLog4NetConfigPath))
            {
                _appender = new RollingFileAppender
                {
                    Name                         = "DefaultAppended",
                    File                         = logfilePath,
                    RollingStyle                 = RollingFileAppender.RollingMode.Size,
                    MaxSizeRollBackups           = 10,
                    PreserveLogFileNameExtension = true,
                    Threshold                    = _debug ? Level.Debug : Level.Info,
                    Layout                       = new PatternLayout("%date [%2thread] %-5level %logger %ndc - %message%newline"),
                };
                _appender.ActivateOptions();
                BasicConfigurator.Configure(_appender);
            }
            else
            {
                XmlConfigurator.ConfigureAndWatch(new FileInfo(optionalLog4NetConfigPath));
            }

            Log.Info(new string('-', 30));
        }
Esempio n. 2
0
        /// <summary>
        /// Sets the <see cref="IAppender"/>'s filter level to the level specified
        /// </summary>
        /// <param name="appender">the <see cref="IAppender"/> to change</param>
        /// <param name="newLevel">the new level at which the <see cref="IAppender"/> should log</param>
        private static void SetAppenderFilterLevel(IAppender appender, log4net.Core.Level newLevel)
        {
            if (appender == null || newLevel == null)
            {
                return;
            }

            AppenderSkeleton baseAppender = appender as AppenderSkeleton;

            if (baseAppender == null)
            {
                return;
            }



            log4net.Filter.LevelRangeFilter rangeFilter = GetLevelRangeFilter(baseAppender);

            if (rangeFilter == null)
            {
                return;
            }

            // lock the IAppender so that its clients wait until this process completes
            lock (baseAppender)
            {
                appender.DoAppend(new log4net.Core.LoggingEvent(logger.GetType(), log4net.LogManager.GetRepository(),
                                                                logger.GetType().Name, log4net.Core.Level.Info, "Changed log level to " + newLevel.ToString(), null));

                rangeFilter.LevelMin = newLevel;
            }
        }
 internal void ApplyTo(AppenderSkeleton appender)
 {
     if (_filter != null)
     {
         appender.AddFilter(_filter.CreateFilter());
     }
 }
Esempio n. 4
0
        public AssociativeCache(
            int way,
            int totalCacheCapacity,
            ICachePolicyFactory <K, V> cachePolicyFactory   = null,
            ICacheSetHashCalculator <K, V> hashSetCacluator = null,
            AppenderSkeleton appender = null)
        {
            this.appender = appender ?? new ConsoleAppender();

            // Implement as a one way cache
            if (way <= 0)
            {
                LoggingUtility.LogData(this.appender, "Number of cache sets cannot be 0 or negative", Level.Fatal);
                throw new ArgumentOutOfRangeException("Number of cache sets cannot be 0 or negative", "way");
            }

            if (totalCacheCapacity <= 0)
            {
                LoggingUtility.LogData(this.appender, "Number of cache sets cannot be 0 or negative", Level.Fatal);
                throw new ArgumentOutOfRangeException("Number of cache sets cannot be 0 or negative", "totalCacheCapacity");
            }

            this.cachePolicyFactory = cachePolicyFactory;
            this.cacheSetLookUp     = new Dictionary <int, CacheSet <K, V> >();
            this.cachePolicyFactory = cachePolicyFactory ?? new LRUPolicyFactory <K, V>();
            this.hashSetCalculator  = hashSetCalculator ?? new DefaultCacheSetHashCalculator <K, V>(way);

            for (int i = 0; i < way; i++)
            {
                this.cacheSetLookUp.Add(i, new CacheSet <K, V>(this.cachePolicyFactory.CreatePolicy(), totalCacheCapacity / way, this.appender));
            }
        }
        private static void ConfigureAppender(AppenderSkeleton appender)
        {
            if (appender.Layout == null)
            {
                appender.Layout = new log4net.Layout.PatternLayout("%d [%t] %-5p %c [%x] <%X{auth}> - %m%n");
            }

            var cfg = Configure.GetConfigSection <Config.Logging>();

            if (cfg != null)
            {
                foreach (var f in typeof(Level).GetFields(BindingFlags.Public | BindingFlags.Static))
                {
                    if (string.Compare(cfg.Threshold, f.Name, true) == 0)
                    {
                        var val = f.GetValue(null);
                        appender.Threshold = val as Level;
                        break;
                    }
                }
            }

            if (appender.Threshold == null)
            {
                appender.Threshold = Level.Info;
            }

            appender.ActivateOptions();

            log4net.Config.BasicConfigurator.Configure(appender);
        }
Esempio n. 6
0
        public static void ApplyDefaultConfiguration(PatternLayout Pattern = default, AppenderSkeleton[] Appenders = default)
        {
            var hierarchy = (Hierarchy)LogManager.GetRepository();


            if (Pattern == default)
            {
                Pattern = DefaultPattern();
                Pattern.ActivateOptions();
            }

            if (Appenders == default)
            {
                Appenders = new AppenderSkeleton[] {
                    DefaultDebugAppender(),
                    DefaultConsoleAppender(),
                    DefaultFileAppender(),
                };
            }

            foreach (var Appender in Appenders)
            {
                Appender.Layout = Pattern;
                Appender.ActivateOptions();
                hierarchy.Root.AddAppender(Appender);
            }

            hierarchy.Root.Level = Level.All;
            hierarchy.Configured = true;
        }
 internal void ApplyTo(AppenderSkeleton appender)
 {
     if (_layout != null)
     {
         appender.Layout = _layout.CreateLayout();
     }
 }
 internal void ApplyTo(AppenderSkeleton appender)
 {
     if (_handler != null)
     {
         appender.ErrorHandler = _handler.CreateErrorHandler();
     }
 }
        public ActiveLoggerFilterScope(string activeLogger)
        {
            ILoggerRepository repository = LogManager.GetRepository();

            repository.Threshold            = Level.All;
            repository.Properties[scopeKey] = activeLogger;

            foreach (IAppender appender in LogManager.GetRepository().GetAppenders())
            {
                AppenderSkeleton appenderSkeleton = appender as AppenderSkeleton;

                if (appenderSkeleton != null)
                {
                    // only inject ActiveLoggerFilter once
                    if (appenderSkeleton.FilterHead == null ||
                        appenderSkeleton.FilterHead.GetType() != typeof(ActiveLoggerFilter))
                    {
                        // inject ActiveLoggerFilter into the head of the filter list
                        IFilter filter = new ActiveLoggerFilter(scopeKey);
                        filter.ActivateOptions();
                        filter.Next = appenderSkeleton.FilterHead; // ???
                        appenderSkeleton.ClearFilters();           // ???
                        appenderSkeleton.AddFilter(filter);        // ???
                    }
                }
            }
        }
Esempio n. 10
0
        private static void LoadLayout(AppenderSkeleton appender, ILoggerRepository repository)
        {
            PatternLayout patternLayout = new PatternLayout();

            patternLayout.ConversionPattern = "记录时间:%date 线程ID:[%thread] 日志级别:%-5level :%logger %n%message%n%n";
            patternLayout.ActivateOptions();
            appender.Layout = patternLayout;
            appender.ActivateOptions();
            BasicConfigurator.Configure(repository, appender);
        }
Esempio n. 11
0
        internal static void LogData(AppenderSkeleton appender, string message, Level trace)
        {
            LoggingEventData eventData = new LoggingEventData()
            {
                Level   = trace,
                Message = message
            };

            appender.DoAppend(new LoggingEvent(eventData));
        }
Esempio n. 12
0
        private bool AppenderError()
        {
            bool result = false;

            if (_appenderError != null)
            {
                result         = true;
                _appenderError = null;
            }
            return(result);
        }
Esempio n. 13
0
        private void AdaptFilters(AppenderSkeleton appender, Level level)
        {
            var rangeFilter = appender.FilterHead as LevelRangeFilter;

            if (rangeFilter == null)
            {
                return;
            }

            rangeFilter.LevelMin = level;
        }
 private void RemoveAllFiltersFromAllAppenders()
 {
     foreach (IAppender appender in LogManager.GetRepository().GetAppenders())
     {
         AppenderSkeleton appenderSkeleton = appender as AppenderSkeleton;
         if (appenderSkeleton != null)
         {
             appenderSkeleton.ClearFilters();
         }
     }
 }
Esempio n. 15
0
            private static ILog LoadConf(TextLog.Default.Config config)
            {
                PatternLayout    layout           = new PatternLayout(config.PatternLayout);
                AppenderSkeleton appenderSkeleton = config.Appender as TextWriterAppender;

                appenderSkeleton.Layout = layout;
                appenderSkeleton.ActivateOptions();
                ILoggerRepository loggerRepository = LogManager.CreateRepository(Guid.NewGuid().ToString());

                BasicConfigurator.Configure(loggerRepository, appenderSkeleton);
                return(LogManager.GetLogger(loggerRepository.Name, Guid.NewGuid().ToString()));
            }
Esempio n. 16
0
        public void AddAppender(AppenderSkeleton appender)
        {
            if (_logger == null)
            {
                LoadLogger();
            }

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

            appender.Layout    = new PatternLayout(GetLogPattern(_logLevel));
            appender.Threshold = hierarchy.LevelMap[_logLevel.ToString().ToUpper(CultureInfo.CurrentCulture)];
            hierarchy.Root.AddAppender(appender);
        }
Esempio n. 17
0
        private static void ConfigPattern(AppenderSkeleton appender, ConfigSource config)
        {
            string logPattern = config.GetString("pattern", null);

            if (logPattern == null)
            {
                logPattern = "%date [%thread] %-5level %logger - %message%newline";
            }

            PatternLayout layout = new PatternLayout(logPattern);

            layout.ActivateOptions();
            appender.Layout = layout;
        }
Esempio n. 18
0
        private void EnsureConsoleAppender()
        {
            if (_consoleAppender != null)
            {
                return;
            }

            var consoleAppenderName = "ConsoleAppender";

            _consoleAppender = (AppenderSkeleton)RootLogger.GetAppender(consoleAppenderName);
            if (_consoleAppender == null)
            {
                _consoleAppender = GetConfiguredAppender(consoleAppenderName) ?? CreateAppender(consoleAppenderName);
                RootLogger.AddAppender(_consoleAppender);
            }
        }
Esempio n. 19
0
        /// <summary>
        /// 设备日志等级
        /// </summary>
        /// <param name="level">日志等级:all,debug,info,warn,error,fatal,off</param>
        internal static void SetLogLevel(string level)
        {
            if (string.IsNullOrWhiteSpace(level))
            {
                return;
            }
            var logLevel = Level.Error;

            switch (level.ToLower())
            {
            case "all": logLevel = Level.All; break;

            case "debug": logLevel = Level.Debug; break;

            case "info": logLevel = Level.Info; break;

            case "warn": logLevel = Level.Warn; break;

            case "error": logLevel = Level.Error; break;

            case "fatal": logLevel = Level.Fatal; break;

            case "off": logLevel = Level.Off; break;
            }
            var hierarchy = LogManager.GetRepository() as Hierarchy;

            // Get the list of Appenders
            if (hierarchy != null)
            {
                var appenders = hierarchy.GetAppenders();

                if (appenders != null)
                {
                    foreach (var appender in appenders)
                    {
                        if (appender is AppenderSkeleton)
                        {
                            AppenderSkeleton appenderSkeleton = appender as AppenderSkeleton;

                            appenderSkeleton.Threshold = logLevel;
                        }
                    }
                }
            }
        }
Esempio n. 20
0
        private static log4net.Filter.LevelRangeFilter GetLevelRangeFilter(AppenderSkeleton appender)
        {
            log4net.Filter.LevelRangeFilter rangeFilter = null;

            lock (appender)
            {
                log4net.Filter.IFilter filterHead = appender.FilterHead;

                //process through the filters until a level range filter is found
                while (filterHead != null)
                {
                    if (typeof(log4net.Filter.LevelRangeFilter).Equals(filterHead.GetType()))
                    {
                        rangeFilter = filterHead as log4net.Filter.LevelRangeFilter;
                        break;
                    }

                    filterHead = filterHead.Next;
                }
            }
            return(rangeFilter);
        }
Esempio n. 21
0
        private IEnumerable <AppenderSkeleton> GetAppenders(IConfigurationRoot configurationRoot, IConfigurationSection log4netSection)
        {
            IEnumerable <IConfigurationSection> children = log4netSection.GetChildren();

            foreach (var child in children)
            {
                if (child.Key == "appender")
                {
                    IConfigurationSection name         = child.GetSection("name");
                    IConfigurationSection type         = child.GetSection("type");
                    Type appenderType                  = Type.GetType(type.Value);
                    ConstructorInfo[] constructorInfos = appenderType.GetConstructors();
                    ConstructorInfo   constructorInfo  = constructorInfos[0];
                    List <object>     arguments        = new List <object>();
                    foreach (ParameterInfo param in constructorInfo.GetParameters())
                    {
                        object argument = null;
                        if (param.Name == "connectionString")
                        {
                            //get connection string from connection strings section
                            IConfigurationSection connectionStringName = child.GetSection("connectionStringName");
                            string connectionString = configurationRoot.GetConnectionString(connectionStringName.Value);
                            argument = connectionString;
                        }
                        else
                        {
                            IConfigurationSection paramConfigurationSection = child.GetSection(param.Name);
                            argument = Convert.ChangeType(paramConfigurationSection.Value, param.ParameterType);
                        }
                        arguments.Add(argument);
                    }
                    AppenderSkeleton appender = Activator.CreateInstance(appenderType, arguments.ToArray()) as AppenderSkeleton;
                    yield return(appender);
                }
            }
        }
Esempio n. 22
0
 internal LogSyntax(AppenderSkeleton skeleton)
 {
     _skeleton = skeleton;
 }
Esempio n. 23
0
        /// <summary>
        /// Initializes the logging system with extra options used by unit tests.
        /// </summary>
        /// <param name="enableMemoryLogger">If true, stores a copy of all log events in memory. Used for testing.</param>
        /// <param name="enableFileLogger">If true, outputs log events to a file.</param>
        /// <param name="colorConsole">If True, colored logs will be used.</param>
        /// <param name="defaultLevel">The default level to set for the root logger.</param>
        /// <param name="quietConsole">If True limits the level on the appenders to <see cref="Level.Error"/></param>
        internal static void Initialize(
            bool enableMemoryLogger,
            bool enableFileLogger,
            bool colorConsole,
            Level defaultLevel,
            bool quietConsole)
        {
            Contract.Requires <InvalidOperationException>(!configured, "The logger system can only be initialised once");
            configured = true;

            repository = (Hierarchy)LogManager.GetRepository();

            repository.LevelMap.Add(LogExtensions.PromptLevel);
            repository.LevelMap.Add(LogExtensions.SuccessLevel);

            rootLogger      = repository.Root;
            cleanLogger     = (Logger)repository.GetLogger(Cleanlogger);
            noConsoleLogger = (Logger)repository.GetLogger(Logfileonly);

            // cleanLogger.Hierarchy = repository;
            // noConsoleLogger.Hierarchy = repository;

            // our two special loggers do not forward log events to the root logger
            cleanLogger.Additivity     = false;
            noConsoleLogger.Additivity = false;

            // this is the base level for the logging system
            repository.Threshold = defaultLevel;
            rootLogger.Level     = defaultLevel;

            // log to a file
            PatternLayout standardPattern = new PatternLayout
            {
                ConversionPattern = "%date{o} [%thread] %-5level %logger - %message%newline%exception",
            };

            standardPattern.ActivateOptions();

            string logFilePath = null;

            if (enableFileLogger)
            {
                var fileAppender = new RollingFileAppender()
                {
                    AppendToFile      = false,
                    Encoding          = Encoding.UTF8,
                    StaticLogFileName = true,

                    // We clean our logs ourselves, so it might be assumed that MaxSizeRollBackups is not needed,
                    // however this constraint is needed to trigger log4net's dedupe function for duplicate file names
                    MaxSizeRollBackups = 100,
                    Layout             = standardPattern,
                    Name = nameof(RollingFileAppender),
                    File = new PatternString("Logs/log_%utcdate{yyyyMMddTHHmmssZ}.txt").Format(),
                    PreserveLogFileNameExtension = true,
                    RollingStyle = RollingFileAppender.RollingMode.Once,
                };
                rootLogger.AddAppender(fileAppender);
                cleanLogger.AddAppender(fileAppender);
                noConsoleLogger.AddAppender(fileAppender);
                fileAppender.ActivateOptions();
                logFilePath = fileAppender.File;
            }

            if (enableMemoryLogger)
            {
                MemoryAppender = new MemoryAppender()
                {
                    Layout = standardPattern,
                };
                rootLogger.AddAppender(MemoryAppender);
                cleanLogger.AddAppender(MemoryAppender);
                noConsoleLogger.AddAppender(MemoryAppender);
                MemoryAppender.ActivateOptions();
            }

            // log to a console
            PatternLayout consolePattern = new PatternLayout
            {
                ConversionPattern = "[%date{o}] %-5level - %message%newline%exception",
            };

            consolePattern.ActivateOptions();
            standardConsoleAppender =
                colorConsole ? (AppenderSkeleton) new ManagedColoredConsoleAppender() : new ConsoleAppender();
            standardConsoleAppender.Layout = consolePattern;

            PatternLayout cleanPattern = new PatternLayout
            {
                ConversionPattern = "%message%newline",
            };

            cleanPattern.ActivateOptions();
            cleanConsoleAppender =
                colorConsole ? (AppenderSkeleton) new ManagedColoredConsoleAppender() : new ConsoleAppender();
            cleanConsoleAppender.Layout = cleanPattern;

            if (colorConsole)
            {
                var mapping = new[]
                {
                    new LevelColors {
                        ForeColor = ConsoleColor.Magenta, Level = LogExtensions.PromptLevel
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Red, Level = Level.Fatal
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.DarkRed, Level = Level.Error
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Yellow, Level = Level.Warn
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Green, Level = LogExtensions.SuccessLevel
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Green, Level = Level.Notice
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Gray, Level = Level.Info
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Cyan, Level = Level.Debug
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.DarkCyan, Level = Level.Trace
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.DarkBlue, Level = Level.Verbose
                    },
                };

                foreach (var map in mapping)
                {
                    ((ManagedColoredConsoleAppender)standardConsoleAppender).AddMapping(map);
                    ((ManagedColoredConsoleAppender)cleanConsoleAppender).AddMapping(map);
                }
            }

            standardConsoleAppender.ActivateOptions();
            cleanConsoleAppender.ActivateOptions();

            rootLogger.AddAppender(standardConsoleAppender);
            cleanLogger.AddAppender(cleanConsoleAppender);

            repository.Configured = true;
            ModifyVerbosity(defaultLevel, quietConsole);

            if (enableFileLogger)
            {
                // Fire and forget the async cleaning task.
                // We'll never know if this fails or not, the exception is captured in the task
                // that we do NOT await. We do however log any exceptions.
                _ = CleanLogs(logFilePath);
            }
        }
Esempio n. 24
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Logging"/> class.
        /// </summary>
        /// <param name="enableMemoryLogger">If true, stores a copy of all log events in memory. Used for testing.</param>
        /// <param name="enableFileLogger">If true, outputs log events to a file.</param>
        /// <param name="colorConsole">If True, colored logs will be used.</param>
        /// <param name="defaultLevel">The default level to set for the root logger.</param>
        /// <param name="quietConsole">If True limits the level on the appenders to <see cref="Level.Error"/>.</param>
        internal Logging(
            bool enableMemoryLogger,
            bool enableFileLogger,
            bool colorConsole,
            Level defaultLevel,
            bool quietConsole)
        {
            LogManager.ResetConfiguration(RootNamespace);

            this.repository = (Hierarchy)LogManager.GetRepository(RootNamespace);

            this.repository.LevelMap.Add(LogExtensions.PromptLevel);
            this.repository.LevelMap.Add(LogExtensions.SuccessLevel);

            this.rootLogger      = this.repository.Root;
            this.cleanLogger     = (Logger)this.repository.GetLogger(CleanLogger);
            this.noConsoleLogger = (Logger)this.repository.GetLogger(LogFileOnly);

            // cleanLogger.Hierarchy = repository;
            // noConsoleLogger.Hierarchy = repository;

            // our two special loggers do not forward log events to the root logger
            this.cleanLogger.Additivity     = false;
            this.noConsoleLogger.Additivity = false;

            // this is the base level for the logging system
            this.repository.Threshold = defaultLevel;
            this.rootLogger.Level     = defaultLevel;

            this.Verbosity    = defaultLevel;
            this.QuietConsole = quietConsole;

            // log to a file
            PatternLayout standardPattern = new PatternLayout
            {
                ConversionPattern = "%date{o} [%thread] %-5level %logger - %message%newline%exception",
            };

            standardPattern.ActivateOptions();

            this.LogFilePath = null;
            if (enableFileLogger)
            {
                this.LogFileName = new PatternString(LogPrefix + "%utcdate{yyyyMMddTHHmmssZ}.txt").Format();
                var fileAppender = new RollingFileAppender()
                {
                    AppendToFile      = false,
                    Encoding          = Encoding.UTF8,
                    StaticLogFileName = true,

                    // We clean our logs ourselves, so it might be assumed that MaxSizeRollBackups is not needed,
                    // however this constraint is needed to trigger log4net's dedupe function for duplicate file names
                    MaxSizeRollBackups = 100,
                    Layout             = standardPattern,
                    Name = nameof(RollingFileAppender),

                    // ReSharper disable StringLiteralTypo
                    File = Path.Combine(LogFolder, this.LogFileName),

                    // ReSharper restore StringLiteralTypo

                    PreserveLogFileNameExtension = true,
                    RollingStyle = RollingFileAppender.RollingMode.Once,
                };
                this.rootLogger.AddAppender(fileAppender);
                this.cleanLogger.AddAppender(fileAppender);
                this.noConsoleLogger.AddAppender(fileAppender);
                fileAppender.ActivateOptions();
                this.LogFilePath = fileAppender.File;
            }

            if (enableMemoryLogger)
            {
                this.MemoryAppender = new MemoryAppender()
                {
                    Layout = standardPattern,
                };
                this.rootLogger.AddAppender(this.MemoryAppender);
                this.cleanLogger.AddAppender(this.MemoryAppender);
                this.noConsoleLogger.AddAppender(this.MemoryAppender);
                this.MemoryAppender.ActivateOptions();
            }

            // log to a console
            PatternLayout consolePattern = new PatternLayout
            {
                ConversionPattern = "[%date{o}] %-5level - %message%newline%exception",
            };

            consolePattern.ActivateOptions();
            this.standardConsoleAppender =
                colorConsole ? (AppenderSkeleton) new ManagedColoredConsoleAppender() : new ConsoleAppender();
            this.standardConsoleAppender.Layout = consolePattern;

            PatternLayout cleanPattern = new PatternLayout
            {
                ConversionPattern = "%message%newline",
            };

            cleanPattern.ActivateOptions();
            this.cleanConsoleAppender =
                colorConsole ? (AppenderSkeleton) new ManagedColoredConsoleAppender() : new ConsoleAppender();
            this.cleanConsoleAppender.Layout = cleanPattern;

            if (colorConsole)
            {
                var mapping = new[]
                {
                    new LevelColors {
                        ForeColor = ConsoleColor.Magenta, Level = LogExtensions.PromptLevel
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Red, Level = Level.Fatal
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.DarkRed, Level = Level.Error
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Yellow, Level = Level.Warn
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Green, Level = LogExtensions.SuccessLevel
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Green, Level = Level.Notice
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Gray, Level = Level.Info
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.Cyan, Level = Level.Debug
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.DarkCyan, Level = Level.Trace
                    },
                    new LevelColors {
                        ForeColor = ConsoleColor.DarkBlue, Level = Level.Verbose
                    },
                };

                foreach (var map in mapping)
                {
                    ((ManagedColoredConsoleAppender)this.standardConsoleAppender).AddMapping(map);
                    ((ManagedColoredConsoleAppender)this.cleanConsoleAppender).AddMapping(map);
                }
            }

            this.standardConsoleAppender.ActivateOptions();
            this.cleanConsoleAppender.ActivateOptions();

            this.rootLogger.AddAppender(this.standardConsoleAppender);
            this.cleanLogger.AddAppender(this.cleanConsoleAppender);

            this.repository.Configured = true;
            this.ModifyVerbosity(defaultLevel, quietConsole);

            if (enableFileLogger)
            {
                // Fire and forget the async cleaning task.
                // We'll never know if this fails or not, the exception is captured in the task
                // that we do NOT await. We do however log any exceptions.
                // ReSharper disable once AssignmentIsFullyDiscarded
                _ = this.CleanLogs(this.LogFilePath);
            }
        }
Esempio n. 25
0
        /// <summary>
        /// Configure the log4net logging infrastructure at runtime from app settings
        /// </summary>


        /// <summary>
        /// Configure a specific appender to use the specified logging level as the threshold
        /// </summary>
        /// <param name="appenderName">Appender name to use when indexing <paramref name="appenderMap"/></param>
        /// <param name="level">Level to set the appender threshold to</param>

        private static void ConfigureLog4NetAppender(
            IAppSettings settings,
            log4net.Repository.Hierarchy.Hierarchy hierarchy,
            Dictionary <string, AppenderSkeleton> appenderMap,
            string appenderName,
            string level,
            ILogger logger)
        {
            AppenderSkeleton appender = null;

            if (appenderMap.ContainsKey(appenderName))
            {
                appender = appenderMap[appenderName];
            }

            if (appender != null)
            {
                try
                {
                    if (string.IsNullOrWhiteSpace(level) == false)
                    {
                        appender.Threshold = hierarchy.LevelMap[level];
                    }
                }
                catch (Exception ex)
                {
                    logger.ErrorFormat("IoCSetup::ConfigureLog4NetAppender[{0}] - Unable to Set {1} Level: {2} - {3}", ContainerName, appenderName, level, ex.Message);
                }

                var fileAppender = appender as FileAppender;

                if (fileAppender != null)
                {
                    string path = null;

                    switch (appenderName)
                    {
                    case Log4NetTraceLogAppenderName:
                        path = settings.TraceLogPath;
                        break;

                    case Log4NetStatsLogAppenderName:
                        path = settings.StatsLogPath;
                        break;
                    }

                    try
                    {
                        if (string.IsNullOrWhiteSpace(path) == false)
                        {
                            fileAppender.File = path;

                            fileAppender.ActivateOptions();
                        }
                    }
                    catch (Exception ex)
                    {
                        logger.ErrorFormat("IoCSetup::ConfigureLog4NetAppender[{0}] - Unable to Set {1} File Path: {2} - {3}", ContainerName, appenderName, level, ex.Message);
                    }
                }
            }
        }
Esempio n. 26
0
 public MRUCachePolicy(AppenderSkeleton appender = null)
 {
     this.queue = new LinkedList <CacheItem <K, V> >();
 }
Esempio n. 27
0
 public TestDefinition(AppenderSkeleton appender)
 {
     _appender = appender;
 }
Esempio n. 28
0
 public RolloverErrorHandler(AsyncRolloverAppender rolloverAppender, AppenderSkeleton appender)
 {
     _rolloverAppender = rolloverAppender;
     _appender         = appender;
 }
Esempio n. 29
0
 private void SetAppenderErrorHandler(AppenderSkeleton appender)
 => appender.ErrorHandler = new PropogateErrorHandler();
Esempio n. 30
0
 internal void AppenderError(AppenderSkeleton appender)
 {
     _appenderError = appender;
 }