0
点赞
收藏
分享

微信扫一扫

glog -- C++日志库

千妈小语 2022-06-21 阅读 79

@[TOC](glog -- C++日志库)

日志库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/下

  • 可能的报错
    在这里插入图片描述
    1. 将src/demangle.cc 170行的 if(str == '\0') 改为 if(str[i] == '\0')
    2. 将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;
}

编译
```shell
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;
}

在这里插入图片描述

输出设置

```c++
//设置日志消息是否转到标准输出而不是日志文件
FLAGS_logtostderr = true;
//设置日志消息除了日志文件之外是否去标准输出
FLAGS_alsologtostderr = true;

##### 输出目录设置
```c++
//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_"); 

例子
```c++
#include<iostream>
#include<glog/logging.h>

int main(int argc,char*argv[]){
google::InitGoogleLogging(argv[0]); //init glog
google::SetLogDestination(google::GLOGINFO,"./logs/INFO");
LOG(INFO)<<"HELLO,WORLD";
google::ShutdownGoogleLogging();
return 0;
}

![在这里插入图片描述](https://s4.51cto.com/images/blog/202206/21013144_62b0af003116727880.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
##### 错误类型
glog有四个错误级别
```c++
enum SeverityLevel
{
  google::INFO = 0,
  google::WARNING = 1,
  google::ERROR = 2,
  google::FATAL = 3,
};

对应的输出方式
```c++
//输出一个Info日志
LOG(INFO) << "info test";
//输出一个Warning日志
LOG(WARNING) << "warning test";
//输出一个Error日志
LOG(ERROR) << "error test";
//输出一个Fatal日志,这是最严重的日志并且输出之后会中止程序
LOG(FATAL) << "fatal test";

##### 条件输出
当条件满足时输出日志
```c++
LOG_IF(INFO, CONDITION) << "got the condition";  

```c++
#include<iostream>
#include<glog/logging.h>

int main(int argc,char*argv[]){
FLAGS_logtostderr = true;
google::InitGoogleLogging(argv[0]); //init glog
google::SetLogDestination(google::GLOGINFO,"./logs/INFO");
LOG_IF(INFO,5>10) << "Hello";
LOG_IF(INFO,5<10) << "WORLD";
google::ShutdownGoogleLogging();
return 0;
}


![在这里插入图片描述](https://s4.51cto.com/images/blog/202206/21013144_62b0af005571710854.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
举报

相关推荐

0 条评论