日志库glog
实现应用程序级日志记录的C++库。
项目地址: https://github.com/google/glog
glog安装
- glog-0.3.3.tar.gz 下载: https://download.csdn.net/download/first_bug/85713531
- 编译安装
./configure make make install
默认安装在usr/local/lib/下
头文件在/usr/local/include/glog/下
- 可能的报错
- 将src/demangle.cc 170行的 if(str == ‘\0’) 改为 if(str[i] == ‘\0’)
- 将src/demangle.cc 226行的 if (state->mangle_cur == ‘\0’) 改为 if (*(state->mangle_cur) == ‘\0’)
- 成功安装
简单使用
默认输出
#include<iostream> #include<glog/logging.h> int main(int argc,char*argv[]){ google::InitGoogleLogging(argv[0]); //init glog LOG(INFO)<<"HELLO,WORLD"; google::ShutdownGoogleLogging(); return 0; }
编译
g++ glogtest.cpp -o glogtest -lglog
输出文件位置为/tmp 目录一下
仅输出到标准输出
#include<iostream> #include<glog/logging.h> int main(int argc,char*argv[]){ / FLAGS_logtostderr = true; // log turn to stderr instead of file google::InitGoogleLogging(argv[0]); //init glog LOG(INFO)<<"HELLO,WORLD"; google::ShutdownGoogleLogging(); return 0; }
输出设置
//设置日志消息是否转到标准输出而不是日志文件 FLAGS_logtostderr = true; //设置日志消息除了日志文件之外是否去标准输出 FLAGS_alsologtostderr = true;
输出目录设置
//INFO级别的日志都存放到logs目录下且前缀为INFO_ google::SetLogDestination(google::GLOG_INFO, "./logs/INFO_"); //WARNING级别的日志都存放到logs目录下且前缀为WARNING_ google::SetLogDestination(google::GLOG_WARNING, "./logs/WARNING_"); //ERROR级别的日志都存放到logs目录下且前缀为ERROR_ google::SetLogDestination(google::GLOG_ERROR, "./logs/ERROR_"); //FATAL级别的日志都存放到logs目录下且前缀为FATAL_ google::SetLogDestination(google::GLOG_FATAL, "./logs/FATAL_");
例子
#include<iostream> #include<glog/logging.h> int main(int argc,char*argv[]){ google::InitGoogleLogging(argv[0]); //init glog google::SetLogDestination(google::GLOG_INFO,"./logs/INFO_"); LOG(INFO)<<"HELLO,WORLD"; google::ShutdownGoogleLogging(); return 0; }
错误类型
glog有四个错误级别
enum SeverityLevel { google::INFO = 0, google::WARNING = 1, google::ERROR = 2, google::FATAL = 3, };
对应的输出方式
//输出一个Info日志 LOG(INFO) << "info test"; //输出一个Warning日志 LOG(WARNING) << "warning test"; //输出一个Error日志 LOG(ERROR) << "error test"; //输出一个Fatal日志,这是最严重的日志并且输出之后会中止程序 LOG(FATAL) << "fatal test";
条件输出
当条件满足时输出日志
LOG_IF(INFO, CONDITION) << "got the condition";
#include<iostream> #include<glog/logging.h> int main(int argc,char*argv[]){ FLAGS_logtostderr = true; google::InitGoogleLogging(argv[0]); //init glog google::SetLogDestination(google::GLOG_INFO,"./logs/INFO_"); LOG_IF(INFO,5>10) << "Hello"; LOG_IF(INFO,5<10) << "WORLD"; google::ShutdownGoogleLogging(); return 0; }