void Log::CreateLoggerFromConfig(std::string const& appenderName) { if (appenderName.empty()) return; LogLevel level = LOG_LEVEL_DISABLED; uint8 type = uint8(-1); std::string options = sConfigMgr->GetStringDefault(appenderName.c_str(), ""); std::string name = appenderName.substr(7); if (options.empty()) { fprintf(stderr, "Log::CreateLoggerFromConfig: Missing config option Logger.%s\n", name.c_str()); return; } Tokenizer tokens(options, ','); Tokenizer::const_iterator iter = tokens.begin(); if (tokens.size() != 2) { fprintf(stderr, "Log::CreateLoggerFromConfig: Wrong config option Logger.%s=%s\n", name.c_str(), options.c_str()); return; } Logger& logger = loggers[name]; if (!logger.getName().empty()) { fprintf(stderr, "Error while configuring Logger %s. Already defined\n", name.c_str()); return; } level = LogLevel(atoi(*iter)); if (level > LOG_LEVEL_FATAL) { fprintf(stderr, "Log::CreateLoggerFromConfig: Wrong Log Level %u for logger %s\n", type, name.c_str()); return; } logger.Create(name, level); //fprintf(stdout, "Log::CreateLoggerFromConfig: Created Logger %s, Level %u\n", name.c_str(), level); ++iter; std::istringstream ss(*iter); std::string str; ss >> str; while (ss) { if (Appender* appender = GetAppenderByName(str)) { logger.addAppender(appender->getId(), appender); //fprintf(stdout, "Log::CreateLoggerFromConfig: Added Appender %s to Logger %s\n", appender->getName().c_str(), name.c_str()); } else fprintf(stderr, "Error while configuring Appender %s in Logger %s. Appender does not exist", str.c_str(), name.c_str()); ss >> str; } }
bool Log::SetLogLevel(std::string const& name, const char* newLevelc, bool isLogger /* = true */) { LogLevel newLevel = LogLevel(atoi(newLevelc)); if (newLevel < 0) return false; if (isLogger) { LoggerMap::iterator it = loggers.begin(); while (it != loggers.end() && it->second.getName() != name) ++it; if (it == loggers.end()) return false; it->second.setLogLevel(newLevel); } else { Appender* appender = GetAppenderByName(name); if (!appender) return false; appender->setLogLevel(newLevel); } return true; }
void Log::CreateLoggerFromConfig(const char* name) { if (!name || *name == '\0') return; LogLevel level = LOG_LEVEL_DISABLED; int32 type = -1; std::string options = "Logger."; options.append(name); options = ConfigMgr::GetStringDefault(options.c_str(), ""); if (options.empty()) { fprintf(stderr, "Log::CreateLoggerFromConfig: Missing config option Logger.%s\n", name); return; } Tokenizer tokens(options, ','); Tokenizer::const_iterator iter = tokens.begin(); if (tokens.size() != 3) { fprintf(stderr, "Log::CreateLoggerFromConfig: Wrong config option Logger.%s=%s\n", name, options.c_str()); return; } type = atoi(*iter); if (type > MaxLogFilter) { fprintf(stderr, "Log::CreateLoggerFromConfig: Wrong type %u for logger %s\n", type, name); return; } Logger& logger = loggers[type]; if (!logger.getName().empty()) { fprintf(stderr, "Error while configuring Logger %s. Already defined\n", name); return; } ++iter; level = LogLevel(atoi(*iter)); if (level > LOG_LEVEL_FATAL) { fprintf(stderr, "Log::CreateLoggerFromConfig: Wrong Log Level %u for logger %s\n", type, name); return; } logger.Create(name, LogFilterType(type), level); //fprintf(stdout, "Log::CreateLoggerFromConfig: Created Logger %s, Type %u, mask %u\n", name, LogFilterType(type), level); // DEBUG - RemoveMe ++iter; std::istringstream ss(*iter); std::string str; ss >> str; while (ss) { if (Appender* appender = GetAppenderByName(str)) { logger.addAppender(appender->getId(), appender); //fprintf(stdout, "Log::CreateLoggerFromConfig: Added Appender %s to Logger %s\n", appender->getName().c_str(), name); // DEBUG - RemoveMe } else fprintf(stderr, "Error while configuring Appender %s in Logger %s. Appender does not exist", str.c_str(), name); ss >> str; } }