简介

glog 是Google Logging的缩写,是实现了应用级别的日志记录功能的满足C++98标准的库。

安装

  • 安装gflags

# git clone https://github.com/gflags/gflags.git
git clone https://gitcode.net/mirrors/gflags/gflags.git
mkdir build
cd build
cmake -DCMAKE_CXX_FLAGS=-fPIC ..
make
sudo make install
  • 安装gtest

# git clone https://github.com/google/googletest.git
git clone https://gitcode.net/mirrors/google/googletest.git
mkdir build
cd build
cmake ..
make
sudo make install
  • 下载glog源码

git clone https://github.com/google/glog.git
  • 使用cmake 编译

cd glog
cmake -S . -B build -G "Unix Makefiles"
cmake --build build

安装

# 测试编译情况,可省略
cmake --build build --target test# 安装
cmake --build build --target install

使用

  • CMakeLists.txt文件修改

cmake_minimum_required (VERSION 3.16)
project (myproj VERSION 1.0)# find package
find_package (glog 0.6.0 REQUIRED)add_executable(${PROJECT_NAME}, main.cpp)# link
target_link_libraries (${PROJECT_NAME} glog::glog)
  • main.cpp修改

// 包含头文件
#include <glog/logging.h>// main函数初始化
google::InitGoogleLogging(argv[0]);
  • 使用

标准输出默认只打印ERROR和FATAL级别的信息。默认生成的全部log位于/tmp目录下。

LOG(INFO) << "TESTMESSAGE INFO" << std::endl;
LOG(WARNING) << "TESTMESSAGE WARNING" << std::endl;
LOG(ERROR) << "TESTMESSAGE ERROR" << std::endl;
LOG(FATAL) << "TESTMESSAGE FATAL" << std::endl;// 默认生成的log位于/tmp目录下

每一行的结尾的 std::endl 可以省略,默认会加换行。

  • 控制台打印

将GLOG_logtostderr设为1,则只会在控制台打印,不会保存在文件。反之设为0,只会保存到文件。

GLOG_logtostderr=1 ./build/mypoj

在程序中设置FLAGS_logtostderr=1也可以打印到控制台。

  • 设置保存的log文件目录

需要在初始化前设置。如果某一级别的路径设为空字符串即""则不会保存该级别的log。

std::string logPath        =  "./logs/";
std::string logInfoPath    = logPath + "info/";
std::string logWarningPath = logPath + "warning/";
std::string logErrorPath   = logPath + "error/";
std::string logFatalPath   = logPath + "fatal/";// set before InitGoogleLogging
google::SetLogDestination(google::GLOG_INFO, logInfoPath.c_str());
google::SetLogDestination(google::GLOG_WARNING, logWarningPath.c_str());
google::SetLogDestination(google::GLOG_ERROR, logErrorPath.c_str());
google::SetLogDestination(google::GLOG_FATAL, logFatalPath.c_str()); google::InitGoogleLogging(argv[0]);
  • INFO级别文件内容格式

Log file created at: yyyy/mm/dd hh:mm:ss
Running on machine: pc
Running duration (h:mm:ss): 0:00:00
Log line format: [IWEF]yyyymmdd hh:mm:ss.uuuuuu threadid file:line] msg
I20230213 11:30:26.891336  2145 main.cpp:65] TESTMESSAGE INFO
W20230213 11:30:26.891638  2145 main.cpp:66] TESTMESSAGE WARNING
E20230213 11:30:26.891757  2145 main.cpp:67] TESTMESSAGE ERROR
F20230213 11:30:26.891894  2145 main.cpp:68] TESTMESSAGE FATAL

linux glog安装使用相关推荐

  1. 无法使用_解决kali linux 2020 安装完后发现无法使用 ifconfig

    鱼蛋计算机交流群总部: 606219746 鱼蛋计算机交流分群002: 212088123 鱼蛋计算机交流分群003: 1020025486 鱼蛋计算机交流分群004:1158384728 (建议加此 ...

  2. linux编译安装jpeg,Linux下JPEG库安装脚本(转)

    Linux下JPEG库安装脚本(转)[@more@]该脚本用于在Linux下安装JPEG库,在安装GD库的时候如果没有JPEG库,GD将不能生成JPEG格式的图象. 作者: 何志强#----where ...

  3. Python基础学习1(Python的Windows和Linux的安装及简单学习)

    一Python的安装 1.Windows下安装Python (1)windows 命令行的几个常见的命令 dir:查看当前目录下的所有文件,以及目录 cd + NAME:进入到NAME目录下(tab键 ...

  4. linux valgrind 安装和使用

    linux valgrind 安装和使用 安装过程没这么复杂. 直接命令行: sudo apt-get install valgrind Valgrind 是个开源的工具,功能很多.例如检查内存泄漏工 ...

  5. linux命令安装组件,Linux安装各种组件

    [TOC] Linux安装各种组件 ============================= ## 安装JDK 官网下载最新JDK ``` http://www.oracle.com/technet ...

  6. linux上安装mysql,tomcat,jdk

    Linux 上安装 1 安装jdk 检测是否安装了jdk 运行 java –version 若有 需要将其卸载 a)         查看安装哪些jdk rmp –qa |grep java b)   ...

  7. linux下安装sbt_如何在Linux上安装SBT

    linux下安装sbt 介绍 (Introduction) Hi! I am Sanjula, and in this guide I hope to teach you how to install ...

  8. Kali Linux攻防系统(一:攻防系统Kali Linux下载安装与更新)

    任务一:攻防系统Kali Linux下载安装与更新 1.1.安装Kali Linux虚拟机 1.1.1.电脑硬件配置至少达到 CPU 内存 存储 >四核 >4G >20G 1.1.2 ...

  9. shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?

    每个 Linux 管理员都可能听到过 shell 这个词.你知道什么是 shell 吗? 你知道 shell 在 Linux 中的作用是什么吗? Linux 中有多少个 shell 可用? -- Ma ...

最新文章

  1. 包吃包住包机票的培训你见过吗?云南高通量条形码培训班,截止5月31日
  2. 一步一个脚印学习WCF系列之WCF概要—WCF出现的目的(一)
  3. 结构型模式 -- 代理模式(静态代理动态代理)
  4. Spring MVC——ConverterltString, Dategt DEMO
  5. mysql 数据库存储表情
  6. c语言——什么时候使用getchar()读取换行符
  7. CF280C-Game on Tree【数学期望】
  8. 1073 多选题常见计分法 (20 分)
  9. 做到这4点,才是真正的持续交付| 研发效能提升36计
  10. linux CentOS普通用户无法从ssh登录解决方案
  11. Futter基础第2篇: 实现文本、容器【Text、Container】
  12. [Linked List]Intersection of Two Linked Lists
  13. pve网卡直通虚拟机pve失联打不开解决方案,不用重新安装pve
  14. window环境下杀死tomcat
  15. CentOS 7 下挂载新硬盘
  16. Ubuntu20.04更换软件源
  17. 算术运算符——加号的多种和自增自减
  18. 技术接受模型(TAM,Technology Acceptance Model)
  19. android视频适配与裁剪
  20. Google Earth上划定矢量范围并导出为KMZ文件

热门文章

  1. Alpha策略因子的选择与评价
  2. 在主窗口中增加绘图类控件时(以QPainter为例)时不显示内容的问题(不应该加addStretch)
  3. python和java哪个好就业-数据告诉你,Python、Java、C+哪个更有发展前途?
  4. php 重定向与转发
  5. 抖音直播运营操作技巧(超详细)
  6. [贝聊科技]如何实现一个 AttributedLabel
  7. uniapp使用html2canvas实现PCWeb或手机H5截图
  8. HTML+CSS实现动态背景登录页面
  9. Quoted-Printable编码实现
  10. 在网页中加QQ链接,直接点击即可进行会话,一键加群链接