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