Google glog 使用方法
来源:互联网 发布:微信试探老公 知乎 编辑:程序博客网 时间:2024/05/21 14:48
转自:http://blog.csdn.net/irwin_chen/article/details/8798346
glog官方地址:https://code.google.com/p/google-glog/
glog作用:日志库
安装方法
./configure
make
make install
Hello world
foo_1.cpp
[cpp] view plaincopy
- #include <glog/logging.h>
- int main(int argc,char* argv[]) {
- // If glog is used to parse the command line
- // google::ParseCommandLineFlags(&argc, &argv, true);
- // Initialize Google's logging library.
- google::InitGoogleLogging(argv[0]);
- FLAGS_log_dir = "./log";
- LOG(INFO) << "hello world";
- return 0;
- }
g++ -o>
运行后会在log目录下生成日志文件。
FLAGS_log_dir设置日志输出目录。
- google::ParseCommandLineFlags(&argc, &argv,>
日志级别
INFO, WARNING, ERROR, FATAL、分别对应数字
0, 1, 2, 3
对应级别的日志打印在对应级别的日志文件中。
并且高级别的日志同时打印在本级别和低级别中。
例如 INFO中会有WARNING级别的输出。
日志文件
默认输出在“/tmp/”目录下,修改输出目录方法:
- FLAGS_log_dir值修改
- google::ParseCommandLineFlags(&argc, &argv, true); 使用时,命令行参数log_dir设置。
日志文件名称格式:<program name>.<hostname>.<user name>.log.<severity level>.<date>.<time>.<pid>
例如:hello_world.example.com.hamaji.log.INFO.20080709-222411.10474
本文开始处的例子中的 google::InitGoogleLogging(argv[0]); 参数便为设置程序名称。
初始化参数
FLAGS_log_dir 日志输出目录
FLAGS_v 自定义VLOG(m)时,m值小于此处设置值的语句才有输出
FLAGS_max_log_size 每个日志文件最大大小(MB级别)
FLAGS_minloglevel 输出日志的最小级别,即高于等于该级别的日志都将输出。
更多参数可见 logging.h
并且各个参数均可以通过命令行参数的方式设置。
LOG_XX
满足一定条件下输出日志,例如:
LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";
该宏为:
#define LOG_IF(severity, condition) \
!(condition) ? (void) 0 : google::LogMessageVoidify() & LOG(severity)
上一条语句则为num_cookies > 10为真时, LOG(INFO) << "Got lots of cookies";
logging.h 中还定义了很多其他的条件输出,可根据需要查找使用。
DLOG_XX
依赖于编译参数的LOG_XX,当使用-DNDEBUG编译时失效。该宏为:
#ifndef NDEBUG
#define DLOG(severity) LOG(severity)
还有很多其他的DLOG_XX, 参见头文件。
CHECK_XX
check检查失败时直接退出程序。类似assert()。
和assert的区别是不依赖于编译时的NDEBUG选项, 目的是尽快发现隐藏的问题。例如:
CHECK( fd != NULL ) << " fd is NULL, can not be used ! ";
#define CHECK(condition) \
LOG_IF(FATAL, GOOGLE_PREDICT_BRANCH_NOT_TAKEN(!(condition))) \
<< "Check failed: " #condition " "
还有很多CHECK_XX的宏,可参见头文件。
VLOG_XX
可以独立于默认的日志级别,用户自己定义自己的日志级别。
个人感觉不常用。
信号处理
个人感觉很有用,会输出导致程序结束的信号。SIGKILL 这个信号因为不可捕获所以不在这个信号处理之列。
只需使用google::InstallFailureSignalHandler(); 注册一下即可。
默认是打印到stderr中。
可以使用InstallFailureWriter()定义输出方式。该宏为:
GOOGLE_GLOG_DLL_DECL void InstallFailureWriter(
void (*writer)(const char* data, int size));
}
RAW_XX 线程安全方式
<glog/raw_logging.h>中的各个RAW_XX为线程安全的使用方式。
官方特意说明“which does not allocate any memory or acquire any locks”。
结束
// Shutdown google's logging library.
GOOGLE_GLOG_DLL_DECL void ShutdownGoogleLogging();
0 0
- google glog 使用方法
- Google glog 使用方法
- Google glog 使用方法
- google glog 使用方法
- google glog使用方法及简单封装
- Google glog
- google glog
- Google/glog
- Google glog
- google glog在程序中使用方法与注意事项
- google-glog库编译(Visual Studio 2013)及使用方法
- glog安装和使用方法
- google-glog功能介绍
- glog(Google Logging Library)
- google glog简介
- google-glog安装使用
- google glog源码分析
- google glog分析2
- 使用C#实现网站用户登录
- 图论 次小生成树
- 使用C#登录带验证码的网站
- 豆瓣API用户图书收藏
- C# 中的 ConfigurationManager类引用方法
- Google glog 使用方法
- unity IOs读写txt文件
- 分布式系统中的CAP理论
- android connectivitymanager简介
- UIView-tag循环图片点击图片
- DBCC大全集之(适用版本MS SQLServer 2008 R2)---DBCC CHECKIDENT在 SQL Server 2008 R2 中检查指定表的当前标识值,如有必要,则更改标识值
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- TCP连接建立系列 — 服务端发送SYNACK段
- 框架评测网址
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
蚌埠五河
五河琴里
五河
五河士道
五河县
五河千代纸
五河吧
五河士织
五河邮编
五河新楼盘
安徽五河县
五河琴里图片
五河琴里绅士库
五河琴里熟肉
固镇
固镇县
五泄风景区
诸暨五泄风景区旅游
诸暨五泄风景区
五泄
诸暨五泄
观第五泄记
五泄风景区2019免门票
五更泄泻是什么意思
五泄风景区住宿
五泄旅馆
五泄度假山庄
观第五泄记阅读答案
五泄山里人家农家乐
五泄飞瀑门票
五泄一日游
五泄旅游
五泄门票
五泄张家农家乐
五泄景区门票
五泄在哪里
五泄水库
五泄自驾游
五泄景区在哪里
五泄游船
五泄怎么样