深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例

文章目录

  • [深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例](#深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例)
    • [1. GLOG_minloglevel:最低日志等级控制](#1. GLOG_minloglevel:最低日志等级控制)
    • [2. GLOG_v:控制 VLOG() 的详细输出等级](#2. GLOG_v:控制 VLOG() 的详细输出等级)
    • [3. GLOG_minloglevel 与 GLOG_v 的优先级关系](#3. GLOG_minloglevel 与 GLOG_v 的优先级关系)
    • [4. 使用示例](#4. 使用示例)
      • [4.1 基础示例:不同日志等级](#4.1 基础示例:不同日志等级)
      • [4.2 VLOG 详细日志示例](#4.2 VLOG 详细日志示例)
    • [5. 小结](#5. 小结)

深入理解 GLOG_minloglevel 与 GLOG_v:原理与使用示例

在使用 Google 的 glog 日志库时,两个非常重要的参数是 GLOG_minloglevel 和 GLOG_v。虽然它们看似类似,都与日志输出控制有关,但实际上作用范围和优先级是不同的。

本文将带你深入理解它们的区别、优先级以及如何正确使用,并给出实用示例。

1. GLOG_minloglevel:最低日志等级控制

GLOG_minloglevel 决定了日志的最低输出等级,低于这个等级的日志将不会被打印。

  • 可选值:

    值 日志等级 说明
    0 INFO 信息(默认值)
    1 WARNING 警告
    2 ERROR 错误
    3 FATAL 致命错误
  • 作用 :

    比如,当设置 GLOG_minloglevel=2 时,INFO 和 WARNING 等级的日志将不会输出,只输出 ERROR 和 FATAL 日志。

  • 示例:

    bash 复制代码
    ./your_program --minloglevel=1

    只输出 WARNING、ERROR 和 FATAL 日志。

2. GLOG_v:控制 VLOG() 的详细输出等级

GLOG_v 用于控制VLOG(n) 日志的输出详细程度。

  • 默认值 :0

  • 作用 :

    只有当 GLOG_v >= n 时,VLOG(n) 这条日志才会被输出。

    举例来说:

    • 设置 GLOG_v=1,则 VLOG(0) 和 VLOG(1) 会输出,VLOG(2) 则不会。
    • 设置 GLOG_v=3,则 VLOG(0) ~ VLOG(3) 的日志都会输出。
  • 示例:

    bash 复制代码
    ./your_program --v=2

    会输出 VLOG(0)、VLOG(1) 和 VLOG(2)。

3. GLOG_minloglevel 与 GLOG_v 的优先级关系

  • 先判断 GLOG_minloglevel

    如果当前日志级别低于 GLOG_minloglevel,直接丢弃,不管 GLOG_v 设置是多少。

  • 再判断 GLOG_v
    VLOG(n) 日志是 INFO 级别的日志,因此只有在 GLOG_minloglevel <= 0 时,VLOG(n) 才有可能输出。

  • 总结表格:

    GLOG_minloglevel GLOG_v 是否输出 VLOG(n) 日志
    0(默认) 任意值 可以输出(根据 v 等级)
    1 任意值 不输出(INFO 被屏蔽)
    2 任意值 不输出
    3 任意值 不输出

4. 使用示例

4.1 基础示例:不同日志等级

cpp 复制代码
#include <glog/logging.h>

int main(int argc, char* argv[]) {
    google::InitGoogleLogging(argv[0]);

    LOG(INFO) << "普通信息日志";        // INFO 级别
    LOG(WARNING) << "警告信息";          // WARNING 级别
    LOG(ERROR) << "错误信息";            // ERROR 级别
    // LOG(FATAL) << "致命错误";        // 程序会在输出后终止

    return 0;
}

运行:

bash 复制代码
./your_program --minloglevel=1

输出:

复制代码
WARNING: 警告信息
ERROR: 错误信息

(INFO 被屏蔽)

4.2 VLOG 详细日志示例

cpp 复制代码
#include <glog/logging.h>

int main(int argc, char* argv[]) {
    google::InitGoogleLogging(argv[0]);

    VLOG(0) << "VLOG 详细等级 0";
    VLOG(1) << "VLOG 详细等级 1";
    VLOG(2) << "VLOG 详细等级 2";

    return 0;
}

运行:

bash 复制代码
./your_program --minloglevel=0 --v=1

输出:

复制代码
VLOG 详细等级 0
VLOG 详细等级 1

(VLOG(2) 不输出,因为 v=1)

如果设置:

bash 复制代码
./your_program --minloglevel=1 --v=3

则不会有任何 VLOG 输出 ,因为 minloglevel=1 已经屏蔽了 INFO 日志(包括 VLOG)。

5. 小结

  • GLOG_minloglevel 控制输出日志的最低级别。
  • GLOG_v 控制 VLOG(n) 级别日志的详细程度。
  • 优先级 :GLOG_minloglevel 优先于 GLOG_v。
  • 开发调试 时,建议设置 --minloglevel=0 --v=2 以获取较详细的调试信息。
  • 正式发布 时,通常设置 --minloglevel=1 或更高,关闭低优先级日志输出。
相关推荐
kloc1 小时前
聊天室项目入口网关子服务的实现
linux·c++
csdn_aspnet4 小时前
C++ 3个有序点的方向(Orientation of 3 ordered points)
c++·算法
小七在进步5 小时前
string的使用(2)
c++
青少儿编程课堂6 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:折半搜索优化子集枚举(Meet in the Middle)解析
c++·python·算法·bfs·信息学竞赛
wo_jack8 小时前
C++ 入门笔记(十七):list 入门 —— 为什么 list 不能 sort?
数据结构·c++·面试·stl·list
青少儿编程课堂9 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园连连看解析
c++·python·算法·bfs·信息学竞赛
草莓熊Lotso9 小时前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
David猪大卫1 天前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
HPtiger1 天前
C++ 入门笔记:从 C 到 C++ 的核心过渡(命名空间、输入输出、缺省参数、重载、引用、内联)
c语言·c++·学习
努力努力再努力wz1 天前
【Lua 进阶系列】从 C++ 对象到 Lua 变量:一文理解 userdata、Lua 栈与元表绑定机制
c++·junit·lua