我boost
program options
在我的代码中使用并尝试使用glog
(谷歌日志库)添加详细日志记录。
问题是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)
,但不幸的是使用它会引发异常。