You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

glog示例无输出问题求助:MacOS下运行官方示例无预期结果

问题分析与解决

你的问题核心是没有让gflags解析命令行参数,导致传入的--logtostderr等配置未生效,同时glog的初始化顺序也需要调整。

具体问题点

  1. glog依赖gflags处理命令行参数,但你的代码未调用gflags的参数解析函数,传入的--logtostderr=1等参数完全没被glog识别,程序依然使用默认配置。
  2. 默认情况下,glog会将INFO级别的日志写入/tmp目录下的文件(文件名格式为程序名.INFO.用户名.主机名.时间戳),而非输出到终端,这就是你终端无内容、指定日志目录无写入的原因。

修复方案

1. 修改代码

添加gflags头文件,调整初始化顺序(先解析参数,再初始化glog),可选手动关闭日志确保缓冲区刷新:

#include <glog/logging.h>
#include <gflags/gflags.h>

int main(int argc, char* argv[]) {
    // 先解析命令行参数,第三个参数设为true表示解析后移除已处理的参数
    google::ParseCommandLineFlags(&argc, &argv, true);
    // 初始化glog
    google::InitGoogleLogging(argv[0]);

    int num_cookies = 3;
    LOG(INFO) << "Found " << num_cookies << " cookies";

    // 手动关闭日志,确保所有日志缓冲区都被刷新写入
    google::ShutdownGoogleLogging();
    return 0;
}

2. 重新编译运行

编译命令保持不变:

g++ glog-test.cpp -I/usr/local/include -L/usr/local/lib -lglog -lgflags -o glog-test.o

运行时传入参数:

./glog-test.o --logtostderr=1

此时终端会正常输出Found 3 cookies。

额外验证

如果不修改代码,你可以去/tmp目录下查找对应的日志文件,应该能找到包含Found 3 cookies的内容,但这显然不是你想要的终端输出方式。

内容的提问来源于stack exchange,提问作者Satya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 10:15:41