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日志并进行多维度分析。
相关文章
|
9月前
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
198 6
|
9月前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
194 10
|
4月前
|
JSON API Go
基于责任链与策略模式的轻量级PHP日志库设计
项目日志乱成一团,bug 时好时坏,服务器问题难以复现?我写了个 PHP 日志系统,第一时间发现问题,避免跑路。实现了责任链模式+策略模式,让日志存储更灵活,支持多种输出方式。
|
6月前
|
XML 网络协议 API
超级好用的C++实用库之服务包装类
通过本文对Boost.Asio、gRPC和Poco三个超级好用的C++服务包装类库的详细介绍,开发者可以根据自己的需求选择合适的库来简化开发工作,提高代码的效率和可维护性。每个库都有其独特的优势和适用场景,合理使用这些库可以极大地提升C++开发的生产力。
134 11
|
9月前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
137 5
|
9月前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
152 1
|
10月前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
109 6
|
10月前
|
安全 C++
超级好用的C++实用库之环形内存池
超级好用的C++实用库之环形内存池
204 5
|
10月前
|
缓存 网络协议 Linux
超级好用的C++实用库之套接字
超级好用的C++实用库之套接字
97 1
|
9月前
|
缓存 Linux 编译器
【C++】CentOS环境搭建-安装log4cplus日志组件包及报错解决方案
通过上述步骤,您应该能够在CentOS环境中成功安装并使用log4cplus日志组件。面对任何安装或使用过程中出现的问题,仔细检查错误信息,对照提供的解决方案进行调整,通常都能找到合适的解决之道。log4cplus的强大功能将为您的项目提供灵活、高效的日志管理方案,助力软件开发与维护。
319 0

热门文章

最新文章