Ejemplo n.º 1
0
        private void CreateLoggerFromConfig(string appenderName)
        {
            if (string.IsNullOrEmpty(appenderName))
            {
                return;
            }

            LogLevel level = LOG_LEVEL_DISABLED;

            var options = sConfigMgr.GetStringDefault(appenderName, "");
            var name    = appenderName.Substring(7);

            if (string.IsNullOrEmpty(options))
            {
                Console.Error.WriteLine(string.Format("Log::CreateLoggerFromConfig: Missing config option Logger.{0}", name));
                return;
            }

            var tokens = options.Split(',', StringSplitOptions.TrimEntries);

            if (tokens.Length != 2)
            {
                Console.Error.WriteLine(string.Format("Log::CreateLoggerFromConfig: Wrong config option Logger.{0}={1}", name, options));
                return;
            }

            Logger?logger = null;

            _loggers.TryGetValue(name, out logger);
            if (logger != null)
            {
                Console.Error.WriteLine(string.Format("Error while configuring Logger {0}. Already defined", name));
                return;
            }

            level = LOG_LEVEL_INVALID;
            Enum.TryParse <LogLevel>(tokens[0], out level);

            if (level > NUM_ENABLED_LOG_LEVELS)
            {
                Console.Error.WriteLine(string.Format("Log::CreateLoggerFromConfig: Wrong Log Level '{0}' for logger {1}", tokens[0], name));
                return;
            }

            if (level < _lowestLogLevel)
            {
                _lowestLogLevel = level;
            }

            _loggers[name] = logger = new Logger(name, level);
            //Console.WriteLine(string.Format("Log::CreateLoggerFromConfig: Created Logger {0}, Level {1}", name, level));

            tokens = tokens[1].Split(' ', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries);

            foreach (var item in tokens)
            {
                var appender = GetAppenderByName(item);
                if (appender != null)
                {
                    logger.AddAppender(appender.Id, appender);
                    //Console.WriteLine(string.Format("Log::CreateLoggerFromConfig: Added Appender {0} to Logger {1}", appender.Name, name));
                }
                else
                {
                    Console.Error.WriteLine(string.Format("Error while configuring Appender {0} in Logger {1}. Appender does not exist", item, name));
                }
            }
        }