0

boost program options在我的代码中使用并尝试使用glog(谷歌日志库)添加详细日志记录。

问题是boost捕获了命令行选项,我无法使用该--v标志来控制详细日志记录。有没有从代码设置的方法minloglevel?我未能找到以编程方式执行此操作的函数或宏...

4

2 回答 2

4

我遇到了同样的问题,并且正在设法在我的主要功能中设置 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("...");
}
于 2015-02-05T16:03:06.137 回答
0

我找到了一种解决方法和一个应该但不起作用的答案。您可以使用环境变量GLOG_v来设置详细级别

(在 linux 上)GLOG_v=2 ./your_binary这很好用,但并不理想

我还发现了我正在寻找的没有很好记录的函数google::SetVLOGLevel(char*, int),但不幸的是使用它会引发异常。

于 2015-02-05T14:36:33.273 回答