diff --git a/telegram-bot-api/telegram-bot-api.cpp b/telegram-bot-api/telegram-bot-api.cpp index 833a513..8bffe3e 100644 --- a/telegram-bot-api/telegram-bot-api.cpp +++ b/telegram-bot-api/telegram-bot-api.cpp @@ -146,7 +146,8 @@ int main(int argc, char *argv[]) { td::string http_ip_address = "0.0.0.0"; td::string http_stat_ip_address = "0.0.0.0"; td::string log_file_path; - int verbosity_level = 0; + int default_verbosity_level = 0; + int memory_verbosity_level = VERBOSITY_NAME(INFO); td::int64 log_max_file_size = 2000000000; td::string working_directory; td::string temporary_directory; @@ -225,7 +226,10 @@ int main(int argc, char *argv[]) { options.add_option('l', "log", "path to the file where the log will be written", td::OptionParser::parse_string(log_file_path)); - options.add_checked_option('v', "verbosity", "log verbosity level", td::OptionParser::parse_integer(verbosity_level)); + options.add_checked_option('v', "verbosity", "log verbosity level", + td::OptionParser::parse_integer(default_verbosity_level)); + options.add_checked_option('\0', "memory-verbosity", "memory log verbosity level; defaults to 3", + td::OptionParser::parse_integer(memory_verbosity_level)); options.add_checked_option( '\0', "log-max-file-size", PSLICE() << "maximum size of the log file in bytes before it will be auto-rotated (default is " @@ -254,11 +258,17 @@ int main(int argc, char *argv[]) { return td::Status::OK(); }); options.add_check([&] { - if (verbosity_level < 0) { + if (default_verbosity_level < 0) { return td::Status::Error("Wrong verbosity level specified"); } return td::Status::OK(); }); + options.add_check([&] { + if (memory_verbosity_level < 0) { + return td::Status::Error("Wrong memory verbosity level specified"); + } + return td::Status::OK(); + }); auto r_non_options = options.run(argc, argv, 0); if (need_print_usage) { LOG(PLAIN) << options; @@ -379,14 +389,13 @@ int main(int argc, char *argv[]) { ::td::VERBOSITY_NAME(dns_resolver) = VERBOSITY_NAME(WARNING); - auto set_verbosity_level = [&log](int new_verbosity_level) { - int memory_verbosity_level = td::max(VERBOSITY_NAME(INFO), new_verbosity_level); - SET_VERBOSITY_LEVEL(memory_verbosity_level); + log.set_second_verbosity_level(memory_verbosity_level); + auto set_verbosity_level = [&log, memory_verbosity_level](int new_verbosity_level) { + SET_VERBOSITY_LEVEL(td::max(memory_verbosity_level, new_verbosity_level)); log.set_first_verbosity_level(new_verbosity_level); - log.set_second_verbosity_level(memory_verbosity_level); }; - set_verbosity_level(verbosity_level); + set_verbosity_level(default_verbosity_level); // LOG(WARNING) << "Bot API server with commit " << td::GitInfo::commit() << ' ' // << (td::GitInfo::is_dirty() ? "(dirty)" : "") << " started"; @@ -458,12 +467,12 @@ int main(int argc, char *argv[]) { } if (!need_change_verbosity_level.test_and_set()) { - if (log.get_first_verbosity_level() == verbosity_level) { + if (log.get_first_verbosity_level() == default_verbosity_level) { // increase default log verbosity level set_verbosity_level(100); } else { // return back verbosity level - set_verbosity_level(verbosity_level); + set_verbosity_level(default_verbosity_level); } }