glog 详细日志记录和 Boost 程序选项

glog verbose logging & Boost program options

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

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

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

(on linux)GLOG_v=2 ./your_binary 这很好但不理想

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

我遇到了同样的问题,我设法在我的主要功能中设置 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("...");
}