glog --- C++日志库

简介: 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日志并进行多维度分析。
相关文章
|
5天前
|
存储 C++
C++的I/O流标准库
C++的I/O流标准库
14 2
|
4天前
|
存储 算法 C++
高效利用C++ STL库:标准模板库的使用技巧
本文介绍了C++ STL(标准模板库)的高效使用技巧,包括选择合适的容器类型、使用`emplace_back`而非`push_back`、预分配容器空间和范围for循环遍历容器。此外,还讨论了STL算法的运用,如用算法替代手动循环、使用lambda表达式和进行容器操作。通过这些技巧,开发者可以提升C++代码的性能和可读性。
|
4天前
|
存储 算法 C++
C++标准库深度探索
C++标准库深度探索
|
5天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版产品使用合集之是否支持从库归档日志捕获数据
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6天前
|
JSON Linux C语言
全网最权威唯一值得推荐的《C/C++框架和库》
关于C++框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。
20 1
|
12天前
|
监控 安全 API
orhanobut/logger - 强大的Android日志打印库
orhanobut/logger - 强大的Android日志打印库
28 1
|
13天前
|
Linux Shell 开发工具
C++ 的 ini 配置文件读写/注释库 inicpp 用法 [ header-file-only ]
这是一个C++库,名为inicpp,用于读写带有注释的INI配置文件,仅包含一个hpp头文件,无需编译,支持C++11及以上版本。该库提供简单的接口,使得操作INI文件变得容易。用户可通过`git clone`从GitHub或Gitee获取库,并通过包含`inicpp.hpp`来使用`inicpp::iniReader`类。示例代码展示了读取、写入配置项以及添加注释的功能,还提供了转换为字符串、双精度和整型的函数。项目遵循MIT许可证,示例代码可在Linux环境下编译运行。
46 0
|
13天前
|
机器学习/深度学习 JSON 编译器
C++ 资源大全:标准库、Web框架、人工智能等 | 最全整理
C++ 资源列表,内容包括: 标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等
61 1
|
13天前
|
JSON Java Linux
【探索Linux】P.30(序列化和反序列化 | JSON序列化库 [ C++ ] )
【探索Linux】P.30(序列化和反序列化 | JSON序列化库 [ C++ ] )
26 2
|
13天前
|
存储 安全 算法
【C++入门到精通】 原子性操作库(atomic) C++11 [ C++入门 ]
【C++入门到精通】 原子性操作库(atomic) C++11 [ C++入门 ]
19 1