glog功能详解

1、glog介绍

Google Logging(glog)是一个实现应用程序级日志记录的C++98库。该库提供了基于C++风格流和各种辅助宏的日志API。

2、glog下载安装

2.1. 下载程序

git clone https://github.com/google/glog.git

2.2. 使用cmake编译程序

执行 cd ./glog;mkdir build;cd build;cmake .. 命令编译glog模块。
编译报错,提示以下错误cmake版本要求3.21以上,我设备当前版本为:3.16.3。
在这里插入图片描述
处理办法:更新cmake的版本
a. 在glog中git log 查看版本信息,降低glog的版本。
b. 更新cmake的版本。
查看设备当前版本确实低了,这个是apt-get在线安装能达到的最新版本,为了拿到更新的版本,只能源码编译安装cmake了。

xb@ukylin:~/learn/vslam$ cmake --version cmake version 3.16.3

2.3、编译安装

执行 cd ./glog;mkdir build;cd build;cmake .. 命令后便生成了Makefile文件;
直接在build目录下编译安装即可。 make -j8; sudo make install

3、更新cmake版本

3.1、下载cmake文件

  1. 下载路径: https://cmake.org/files/
  2. 合适的版本与架构
    选择当前日期最新版本: cmake-3.28.0-rc5-linux-x86_64.tar.gz
    架构选择:uname -a 查看架构
    在这里插入图片描述

3.2、cmake安装方式有三种

  • 通过软件包仓库安装: sudo apt install cmake ,版本较低
  • 通过编译好的版本进行安装:下载对应架构编译好的压缩包, cmake-3.28.0-rc5-linux-x86_64.tar.gz ,担心很多库文件或文件安装不正确。
  • 从源码手动编译安装:选择源码安装吧, 比较麻烦。

3.3、 具体安装方式参考

https://blog.csdn.net/A2019250/article/details/133925449

4、glog的使用demo

4.1、测试源码

#include <iostream>
#include <gflags/gflags.h>
#include <glog/logging.h>
using namespace std;

DEFINE_int32(print, 1, "The print times");
DEFINE_string(name, "gflats test!", "The test to argv");
DEFINE_string(msg, "Hello World!", "The message to print");

int main(int argc, char **argv)
{
    gflags::SetUsageMessage("Test CMake configuration of gflags library (gflags-config.cmake)");
    gflags::SetVersionString("0.1");

    gflags::ParseCommandLineFlags(&argc, &argv, true);  //用于接受命令行的flag参数并更新默认参数
    google::InitGoogleLogging("test");//使用glog之前必须先初始化库,仅需执行一次,括号内为程序名

  	FLAGS_alsologtostderr = true;//是否将日志输出到文件和stderr
	FLAGS_colorlogtostderr = true;//是否启用不同颜色显示
    google::SetLogDestination(google::GLOG_INFO, "./info.txt");//INFO级别的日志都存放到logs目录下且前缀为INFO_
  	google::SetLogDestination(google::GLOG_WARNING, "./warn.txt");//WARNING级别的日志都存放到logs目录下且前缀为WARNING_
  	google::SetLogDestination(google::GLOG_ERROR, "./error.txt");	//ERROR级别的日志都存放到logs目录下且前缀为ERROR_
	google::SetLogDestination(google::GLOG_FATAL, "./fatal.txt");	//FATAL级别的日志都存放到logs目录下且前缀为FATAL_

    for(int i=FLAGS_print; i>0;--i)
      LOG(WARNING)<<"print:"<<FLAGS_print<<" name:"<<FLAGS_name<<" msg:"<<FLAGS_msg;
    
    LOG(INFO) << "info";
    LOG(WARNING) << "warning";
    LOG(ERROR) << "error";
    /*LOG(FATAL) << "fatal";*/

  	google::ShutdownGoogleLogging();//当要结束glog时必须关闭库,否则会内存溢出
    gflags::ShutDownCommandLineFlags();

    return 0;
}

4.2、cmake文件

SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
# 注意包含gflags库的安装路径,一定要放在 ADD_EXECUTABLE 之前
LINK_DIRECTORIES(/usr/local/lib)
ADD_EXECUTABLE(hello glog.cpp)
target_link_libraries(hello gflags)
target_link_libraries(hello glog)

4.3、测试结果

在工程的build目录下,执行 cmake..;make; 命令之后便会在 build/bin/ 目录下生成可执行文件。在此目录下执行命令: ./hello -print=6 ,执行结果为:
在这里插入图片描述
注意:
针对 error 的log文件指记录了 error及fatal 等级的信息;
针对 ware 的log文件指记录了 ware、error及fatal 等级的信息;
针对 info 的log文件指记录了 info、ware、error及fatal 等级的信息;

5、glog的其他功能

优先主线任务,后续有需要再补充吧

6、推荐资料

https://blog.csdn.net/didi_ya/article/details/123029601
官方文档:http://google-glog.googlecode.com/svn/trunk/doc/glog.html。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值