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日志并进行多维度分析。
相关文章
|
3月前
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
85 6
|
3月前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
126 10
|
3月前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
89 5
|
3月前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
79 1
|
4月前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
47 6
|
4月前
|
安全 C++
超级好用的C++实用库之环形内存池
超级好用的C++实用库之环形内存池
76 5
|
4月前
|
缓存 网络协议 Linux
超级好用的C++实用库之套接字
超级好用的C++实用库之套接字
40 1
|
4月前
|
存储 算法 安全
超级好用的C++实用库之sha256算法
超级好用的C++实用库之sha256算法
162 1
|
3月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
82 0
|
4月前
|
存储 算法 安全
超级好用的C++实用库之国密sm4算法
超级好用的C++实用库之国密sm4算法
105 0