Glog使用文档

gcp 2020-09-26 22:23:39 4017

来自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/...log..-

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 ,默认为 "" )
每个模块的详细日志的级别。参数为逗号分隔的一组 = 支持通配(即gfs*代表所有gfs开头的名字),匹配不包含扩展名的文件名(忽略 .cc/.h./-inl.h 等)。 会覆盖 --v 指定的值。

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";
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
gcp
红包 2 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
gcp
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区