文章目录
- [深入理解 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或更高,关闭低优先级日志输出。