glog --- C++日志库

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: glog --- C++日志库


日志库glog

实现应用程序级日志记录的C++库。

项目地址: https://github.com/google/glog

glog安装
./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;
}

编译

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;
}

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
13天前
|
存储 计算机视觉 C++
在C++中实现Armadillo库与OpenCV库之间的数据格式转换
在C++中实现Armadillo库与OpenCV库之间的数据格式转换是一项常见且实用的技能。上述步骤提供了一种标准的方法来进行这种转换,可以帮助开发者在两个库之间高效地转移和处理数据。虽然转换过程相对直接,但开发者应留意数据类型匹配和性能优化等关键细节。
24 11
|
1月前
|
前端开发 C语言 开发者
领导被我的花式console.log吸引了!直接写入公司公共库!
【8月更文挑战第23天】领导被我的花式console.log吸引了!直接写入公司公共库!
37 2
领导被我的花式console.log吸引了!直接写入公司公共库!
|
14天前
|
存储 计算机视觉 C++
在C++中实现Armadillo库与OpenCV库之间的数据格式转换
在C++中实现Armadillo库与OpenCV库之间的数据格式转换是一项常见且实用的技能。上述步骤提供了一种标准的方法来进行这种转换,可以帮助开发者在两个库之间高效地转移和处理数据。虽然转换过程相对直接,但开发者应留意数据类型匹配和性能优化等关键细节。
15 3
|
25天前
|
C++
fedora安装静态c和c++库
fedora安装静态c和c++库
|
1月前
|
Linux API
在Linux中,程序产生了库日志虽然删除了,但磁盘空间未更新是什么原因?
在Linux中,程序产生了库日志虽然删除了,但磁盘空间未更新是什么原因?
|
1月前
|
存储 JSON 前端开发
一文搞懂 Go 1.21 的日志标准库 - slog
一文搞懂 Go 1.21 的日志标准库 - slog
54 2
|
1月前
|
JSON Go API
一文搞懂 Golang 高性能日志库 - Zap
一文搞懂 Golang 高性能日志库 - Zap
56 2
|
26天前
|
C++
C/C++静态链接pthread库的坑【-static -pthread】
C/C++静态链接pthread库的坑【-static -pthread】
|
1月前
|
C++
C++标准库探索
C++标准库探索
33 0
|
1月前
|
存储 JSON Go
一文搞懂 Golang 高性能日志库 Zerolog
一文搞懂 Golang 高性能日志库 Zerolog
79 0