Glog使用文档
来自Google的Glog是一个应用程序的日志库。它提供基于C++风格的流的日志API,以及各种辅助的宏。打印日志只需以流的形式传给 LOG(level) ,例如:
#include <glog/logging.h>
int main(int argc, char* argv[]) {
// Initialize Google's logging library.
google::InitGoogleLogging(argv[0]);
// ...
LOG(INFO) << "Found " << num_cookies << " cookies";
}
Glog定义了一系列的宏来简化记录日志的工作。你可以:按级别打印日志,通过命令行控制日志行为,按条件打印日志,不满足条件时终止程序,引入自定义的日志级别,等等。
日志级别
可以指定下面这些级别(按严重性递增排序): INFO, WARNING, ERROR, and FATAL 。打印 FATAL 消息会在打印完成后终止程序。和其他日志库类似,级别更高的日志会在同级别和所有低级别的日志文件中打印。
DFATAL 级别会在调试模式(没有定义 NDEBUG 宏)中打印 FATAL 日志,但是会自动降级为 ERROR 级别,而不终止程序。
如果不指定的话,Glog输出到文件 /tmp/
logtostderr ( bool ,默认为 false )
日志输出到stderr,不输出到日志文件。
colorlogtostderr ( bool ,默认为 false )
输出彩色日志到stderr。
stderrthreshold ( int ,默认为2,即 ERROR )
将大于等于该级别的日志同时输出到stderr。日志级别 INFO, WARNING, ERROR, FATAL 的值分别为0、1、2、3。
minloglevel ( int ,默认为0,即 INFO )
打印大于等于该级别的日志。日志级别的值同上。
log_dir ( string ,默认为 "" )
指定输出日志文件的目录。
v ( int ,默认为0)
显示所有 VLOG(m) 的日志, m 小于等于该flag的值。会被 --vmodule 覆盖。
vmodule ( string ,默认为 "" )
每个模块的详细日志的级别。参数为逗号分隔的一组
logging.cc 中还定义了其他一些flag。grep一下 DEFINE_ 可以看到全部。
也可以通过修改 FLAGS_* 全局变量来改变flag的值。
LOG(INFO) << "file";
// Most flags work immediately after updating values.
FLAGS_logtostderr = 1;
LOG(INFO) << "stderr";
FLAGS_logtostderr = 0;
// This won't change the log destination. If you want to set this
// value, you should do this before google::InitGoogleLogging .
FLAGS_log_dir = "/some/log/directory";
LOG(INFO) << "the same file";
按条件/次数打印日志
有时你可能只想在满足一定条件的时候打印日志。可以使用下面的宏来按条件打印日志:
LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";
上面的日志只有在满足 num_cookies > 10 时才会打印。
另一种情况,如果代码被执行多次,可能只想对其中某几次打印日志。
LOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie";
上面的代码会在执行的第1、11、21、...次时打印日志。 google::COUNTER 用来表示是哪一次执行。
可以将这两种日志用下面的宏合并起来。
LOG_IF_EVERY_N(INFO, (size > 1024), 10) << "Got the " << google::COUNTER << "th big cookie";
不只是每隔几次打印日志,也可以限制在前n次打印日志:
LOG_FIRST_N(INFO, 20) << "Got the " << google::COUNTER << "th cookie";
上面会在执行的前20次打印日志。
调试模式
调试模式的日志宏只在调试模式下有效,在非调试模式会被清除。可以避免生产环境的程序由于大量的日志而变慢。
DLOG(INFO) << "Found cookies";
DLOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";
DLOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie";
- 分享
- 举报
-
浏览量:7282次2020-09-26 21:58:55
-
浏览量:6119次2020-09-26 22:13:18
-
浏览量:2092次2017-11-17 14:46:14
-
浏览量:513次2024-02-20 10:45:20
-
浏览量:1370次2022-01-14 09:00:12
-
浏览量:5157次2020-12-19 17:48:05
-
浏览量:1711次2020-08-14 18:41:11
-
浏览量:584次2023-12-22 22:16:53
-
浏览量:2435次2019-11-09 18:26:29
-
浏览量:3245次2020-08-20 11:09:57
-
浏览量:10191次2020-08-20 11:12:38
-
浏览量:2382次2020-08-03 20:16:34
-
浏览量:3280次2019-12-09 17:51:38
-
浏览量:1710次2019-12-31 16:25:11
-
浏览量:1495次2024-02-21 17:22:46
-
浏览量:3977次2024-01-19 13:48:15
-
浏览量:13667次2020-12-17 14:44:21
-
浏览量:10304次2020-12-07 23:36:10
-
浏览量:1853次2020-08-19 17:00:36
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
gcp
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明