static void init_log_streams(const Settings &cmd_args) { #if RUN_IN_PLACE std::string log_filename = DEBUGFILE; #else std::string log_filename = porting::path_user + DIR_DELIM + DEBUGFILE; #endif if (cmd_args.exists("logfile")) log_filename = cmd_args.get("logfile"); g_logger.removeOutput(&file_log_output); std::string conf_loglev = g_settings->get("debug_log_level"); // Old integer format if (std::isdigit(conf_loglev[0])) { warningstream << "Deprecated use of debug_log_level with an " "integer value; please update your configuration." << std::endl; static const char *lev_name[] = {"", "error", "action", "info", "verbose"}; int lev_i = atoi(conf_loglev.c_str()); if (lev_i < 0 || lev_i >= (int)ARRLEN(lev_name)) { warningstream << "Supplied invalid debug_log_level!" " Assuming action level." << std::endl; lev_i = 2; } conf_loglev = lev_name[lev_i]; } if (log_filename.empty() || conf_loglev.empty()) // No logging return; LogLevel log_level = Logger::stringToLevel(conf_loglev); if (log_level == LL_MAX) { warningstream << "Supplied unrecognized debug_log_level; " "using maximum." << std::endl; } verbosestream << "log_filename = " << log_filename << std::endl; try { file_log_output.open(log_filename.c_str()); g_logger.addOutputMaxLevel(&file_log_output, log_level); } catch (std::exception &e) { errorstream << ": log open exception: " << log_filename << " err: " << e.what() << std::endl; g_logger.removeOutput(&file_log_output); } g_time_taker_enabled = g_settings->getU16("time_taker_enabled") ? g_settings->getU16("time_taker_enabled") : ((g_settings->getFloat("profiler_print_interval") || log_level >= LL_INFO) ? 100 : 0); }
static void init_log_streams(const Settings &cmd_args) { std::string log_filename = porting::path_user + DIR_DELIM + DEBUGFILE; if (cmd_args.exists("logfile")) log_filename = cmd_args.get("logfile"); g_logger.removeOutput(&file_log_output); std::string conf_loglev = g_settings->get("debug_log_level"); // Old integer format if (std::isdigit(conf_loglev[0])) { warningstream << "Deprecated use of debug_log_level with an " "integer value; please update your configuration." << std::endl; static const char *lev_name[] = {"", "error", "action", "info", "verbose"}; int lev_i = atoi(conf_loglev.c_str()); if (lev_i < 0 || lev_i >= (int)ARRLEN(lev_name)) { warningstream << "Supplied invalid debug_log_level!" " Assuming action level." << std::endl; lev_i = 2; } conf_loglev = lev_name[lev_i]; } if (log_filename.empty() || conf_loglev.empty()) // No logging return; LogLevel log_level = Logger::stringToLevel(conf_loglev); if (log_level == LL_MAX) { warningstream << "Supplied unrecognized debug_log_level; " "using maximum." << std::endl; } verbosestream << "log_filename = " << log_filename << std::endl; file_log_output.open(log_filename); g_logger.addOutputMaxLevel(&file_log_output, log_level); }