Glog剖析之DLOG
首先来看看Glog文档上是如何介绍DLOG的:
Debug Mode Support
Special "debug mode" logging macros only have an effect in debug mode and are compiled away to nothing for non-debug mode compiles. Use these macros to avoid slowing down your production application due to excessive logging.
DLOG(INFO) << "Found cookies";
下来来看看DLOG宏是如何定义的
#ifndef NDEBUG#define DLOG(severity) LOG(severity)#else#define DLOG(severity) true ? (void) 0 : google::LogMessageVoidify() & LOG(severity)
调用
LOG(INFO) << "info message";
就可以打印日志信息。
#define DLOG(severity) true ? (void) 0 : google::LogMessageVoidify() & LOG(severity)
这段定义不是很好理解,举个例子来分析。
DLOG(INFO) << "Found cookies";
宏展开之后就是
true ? (void) 0 : google::LogMessageVoidify() & LOG(INFO) << "Found cookies"
首先是运算符优先级的问题,加上括号之后
true ? (void) 0 : (google::LogMessageVoidify() & (LOG(INFO) << "Found cookies"))
根据Glog代码中的注释,发现google::LogMessageVoidify() 的作用是去除编译时的警告信息,忽略之。
true ? (void) 0 : (LOG(INFO) << "Found cookies")
这里有个小技巧,问号表达式中,如果条件是true,则:之后的代码并不会执行
我写了个验证逻辑
int i = 0;
true ? (void) 0 : i++;assert(i == 0);
所以这样定义DLOG宏,在Release模式下
DLOG(INFO) << "Found cookies";
展开之后是
(void) 0;
Glog剖析之DLOG相关推荐
- caffe中LOG(INFO) DLOG(INFO)介绍(统称Google glog)
Original url: http://blog.51cto.com/mengjh/546766 本文是根据自己的理解翻译组织了glog的manual,鉴于自身的理解能力和英语水平,可能存在谬 ...
- failed to open log file_C++中glog源码剖析以及如何设计一个高效 log模块
每个开发者编程中都会记录log信息,多数人都会使用log第三方库,log库使用起来很方便,但我们也需要了解log系统的原理,这里以glog为例进行分析. 开始 这里不会介绍glog中是如何控制INFO ...
- C++系统日志库精选:深入剖析glog与log4cplus,轻松搭建高效日志系统
目录标题 引言 日志系统的重要性 glog与log4cplus简介与应用场景 C++日志系统库的选择依据 glog基础知识 glog库的关键功能 glog库的安装与使用 glog库的基本日志功能与级别 ...
- 【C++】google glog详解
0.简介 glog是google的日志管理系统,配合gflags库,通过命令行参数管理日志. 源码下载:https://github.com/google/glog ubuntu安装: sudo ap ...
- glog日志库使用笔记
日志能方便地诊断程序原因.统计程序运行数据,是大型软件系统必不可少的组件之一.glog 是google的开源日志系统,相比较log4系列的日志系统,它更加轻巧灵活. 在Github上下载glog,解压 ...
- How To Use Google Logging Library (glog)
文章转自:http://www.cnblogs.com/lexus/archive/2012/10/29/2744595.html 版权归原作者. Introduction Google glog i ...
- SLAM本质剖析-Boost
0. 简介 在深入剖析了Ceres.Eigen.Sophus.G2O后,以V-SLAM为代表的计算方式基本已经全部讲完.就L-SLAM而言,本系列也讲述了PCL.Open3D.与GTSAM点云计算部分 ...
- google glog介绍与使用
[前言] 本文简介了glog及其使用方法,转载自轻典的文章glog . 一.安装配置 1.简介 google 出的一个C++轻量级日志库,支持以下功能: ◆ 参数设置,以命令行参数的方式设置标志参数来 ...
- glog使用与说明(转载)
原文地址:https://www.cnblogs.com/tianyajuanke/archive/2013/02/22/2921850.html 一.安装配置 1.1简介 google 出的一个C+ ...
最新文章
- 分类算法之贝叶斯网络(Bayesian networks)
- 网络营销外包专员浅析网络营销外包站内关键词优化技巧(不外传)
- Gearman 异步处理委派任务
- Swift:如何判断一个对象是否是某个类(或其子类)的实例
- 51php 数据不同步,php避免循环查询数据库优化一对多查询
- xpose修改手机imei码,注入广告
- Flutter游戏:启动时的欢迎页
- building for production...Killed
- redis客户端分析
- N卡A卡流处理器的区别解析
- 【元胞自动机】基于元胞自动机实现艺术图像处理附matlab代码
- IPIP.net状告阿里云抄袭侵权
- Antv F2双柱状图和折线图的混合写法
- 计算机组装与维修论文摘要,计算机组装与维护—本科毕业设计论文摘要.doc
- 8.1 linux基础,创建用户
- 呼叫中心电话系统怎么搭建?能用到哪些智能应用?
- 如何快速提高网站用户体验之3大绝招:快、准、狠
- 全程无尿点,死磕前端~
- 关于isEmpty(),null,“”的理解
- 基于战舰V3的4.3寸电容触摸屏