я использую boost
program options
в моем коде и пытается добавить подробное ведение журнала с помощью glog
(Библиотека журнала Google).
Проблема в том, что boost
захватывает параметры командной строки, и я не могу использовать --v
флаг для контроля многословной регистрации. Есть ли способ настройки minloglevel
из кода? Мне не удалось найти функцию или макрос для этого программно …
У меня была та же проблема, и мне удалось установить флаги glog в моей основной функции следующим образом:
namespace po = boost::program_options;
int main(int ac, char **av) {
po::options_description desc("...");
desc.add_options()
("verbosity,v", po::value<int>(), "set verbose logging level, defaults to 0")
;
po::variables_map vm;
try{
po::store(po::parse_command_line(ac, av, desc), vm);
po::notify(vm);
}
catch (po::required_option& e){
...
}
...
if (vm.count("verbosity")){
FLAGS_v = vm["verbosity"].as<int>();
}
else{
FLAGS_v = 0;
}
google::InitGoogleLogging("...");
}
Я нашел одну работу вокруг и один ответ, который должен, но не работает.
Вы можете использовать переменную среды GLOG_v
установить уровень детализации
(на Linux)GLOG_v=2 ./your_binary
Это работает хорошо, но не идеально
Я также нашел не очень хорошо документированную функцию google::SetVLOGLevel(char*, int)
это именно то, что я искал, но, к сожалению, его использование создает исключение.