目录

1、编译安装

2、Qt下工程示例

3、几个常用参数

4、重定位日志信息到特定文件

5、条件输出

6、其它函数


日志级别:

0 - debug

1 - info (still a LOT of outputs)

2 - warnings

3 - errors

对应级别的日志打印在对应级别的日志文件中,并且高级别的日志同时打印在本级别和低级别中。例如 INFO中会有WARNING级别的输出。

LOG(INFO) << "info test"; //输出一个Info日志
LOG(WARNING) << "warning test"; //输出一个Warning日志
LOG(ERROR) << "error test"; //输出一个Error日志
LOG(FATAL) << "fatal test"; //输出一个Fatal日志,这是最严重的日志并且输出之后会中止程序

1、编译安装

wget https://codeload.github.com/google/glog/zip/refs/tags/v0.3.5
cd glog-0.3.5
# ./autogen.sh
./configure --prefix=path(install) # 可忽略,使用默认安装路径
make
sudo make install

注意:arm平台编译,./configure增加编译选项: --build=arm-linux

默认安装路径为:

/usr/local/include
/usr/local/lib
libglog.pc '/usr/local/lib/pkgconfig'

2、Qt下工程示例

.pro配置:

CONFIG += c++11 console
SOURCES += main.cpp
LIBS += -L/usr/local/lib -lglog -lpthread

示例代码:

#include <string>
#include <iostream>
#include glog/logging.h   // glog 头文件
#include glog/raw_logging.hint main(int argc, char** argv)
{google::InitGoogleLogging(argv[0]); // 初始化log当前目录FLAGS_log_dir = "./log" ;       // 日志文件目录路径:argv[0] + FLAGS_log_dirFLAGS_stderrthreshold = google::INFO;  //log等级为INFO级别LOG(INFO) <<  "logging info" ;LOG(WARNING) <<  "logging warning" ;LOG(ERROR) <<  "logging error" ;google::ShutdownGoogleLogging(); // 程序结束前关闭日志,避免内存溢出return 0;
}

结果:

log目录下会生成三个文件:xxx.ERROR、xxx.INFO、xxx.WARNING,记录打印信息。如:xxx.WARNING信息如下:

Log file created at: 2021/09/27 14:37:17
Running on machine: ubuntu-pc
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
W0927 14:37:17.748003 11497 main.cpp:14]  logging warning
E0927 14:37:17.748054 11497 main.cpp:15]  logging error 

3、几个常用参数

默认控制台与日志文件均显示,通过下面俩参数设置只显示在其中一个。

  FLAGS_logtostderr = true; // 设置日志消息只显示在控制台。

  FLAGS_alsologtostderr = true; // 设置日志消息只显示在日志文件,不显示在控制台。

  FLAGS_colorlogtostderr = true; // 设置记录到标准输出的颜色消息(如果终端支持)

  FLAGS_log_prefix = true; // 设置日志前缀是否应该添加到每行输出

  FLAGS_logbufsecs = ; // 设置可以缓冲日志的最大秒数,0指实时输出

  FLAGS_max_log_size = 10; // 设置最大日志文件大小(以MB为单位)

  FLAGS_stop_logging_if_full_disk = true; // 设置是否在磁盘已满时避免日志记录到磁盘

补充:

FLAGS_log_dir       日志输出目录

FLAGS_v                 自定义VLOG(m)时,m值小于此处设置值的语句才有输出

FLAGS_max_log_size     每个日志文件最大大小(MB级别)

FLAGS_minloglevel       输出日志的最小级别,即高于等于该级别的日志都将输出。

4、重定位日志信息到特定文件

google::SetLogDestination(google::GLOG_FATAL, "log_caffe_err.log");
google::SetLogDestination(google::GLOG_ERROR, "log_caffe_err.log");
google::SetLogDestination(google::GLOG_WARNING, "log_caffe_err.log");
google::SetLogDestination(google::GLOG_INFO, "log_caffe_info.log");

5、条件输出

1)当条件满足时输出日志

//当 num_cookies > 10 时输出日志
LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";

2) 第一次打印开始,每隔N次打印一次

//google::COUNTER 记录该语句被执行次数,从1开始,在第一次运行输出日志之后,每隔 10 次再输出一次日志信息
LOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie"; 

3)每隔N次判断条件是否满足,满足则打印。

//上述两者的结合,不过要注意,是先每隔 10 次去判断条件是否满足,如果滞则输出日志;而不是当满足某条件的情况下,每隔 10 次输出一次日志信息
LOG_IF_EVERY_N(INFO, (size > 1024), 10) << "Got the " << google::COUNTER << "th big cookie"; 

4)前N次打印,之后不打印

//当此语句执行的前 20 次都输出日志,然后不再输出
LOG_FIRST_N(INFO, 20) << "Got the " << google::COUNTER << "th cookie"; 

注意:各个语句使用时自己的 google::COUNTER计数器是互相独立的。

6、其它函数

  google::SetLogDestination(google::INFO, "log/INFO_"); // 设置特定严重级别的日志的输出目录和前缀。第一个参数为日志级别,第二个参数表示输出目录及日志文件名前缀

  google::SetLogFilenameExtension("logExtension"); // 在日志文件名中级别后添加一个扩展名。适用于所有严重级  

  google::SetStderrLogging(google::INFO); // 大于指定级别的日志都输出到标准输出

  google::InstallFailureSignalHandler(); // 将 coredumped 信息输出到 stderr

扩展阅读:

1、Google glog使用说明

Google glog使用说明 - LyndonYoung - 博客园

代码示例:

#include <iostream>
#include <glog/logging.h>
#include <cstdlib>int main(int argc, char** argv){google::InitGoogleLogging(argv[0]);// create logpathstd::string str_des;str_des.append("mkdir -p ");str_des.append("log");system(str_des.c_str());// INFOstd::string str_info;str_info.append("./log");str_info.append("/INFO_");google::SetLogDestination(google::INFO, str_info.c_str());// WARNINGstd::string str_warn;str_warn.append("./log");str_warn.append("/WARNING_");google::SetLogDestination(google::WARNING, str_warn.c_str());LOG(WARNING) << "The is a warning!";// my own typestd::string str_pro;str_pro.append("./log");str_pro.append("/PROFILE_");google::SetLogDestination(google::WARNING, str_pro.c_str());LOG(WARNING) << "The is my own type!";// stop gloggoogle::ShutdownGoogleLogging();
}

linux glog使用相关推荐

  1. linux glog安装使用

    简介 glog 是Google Logging的缩写,是实现了应用级别的日志记录功能的满足C++98标准的库. 安装 安装gflags # git clone https://github.com/g ...

  2. linux glog 0.50版本 设置交叉编译器生成静态库

    目标:设置glog的交叉编译器,生成静态库libglog.a: 步骤: (1)下载最新版本的glog源码,最新版本0.050(2021.08.23) https://github.com/google ...

  3. glog arm linux,glog for Android

    最近在移植的时候需要将glog移植到Android上运行,在捣鼓了几天2天之后终于搞定,在此分享一下. 首选需要感谢的是https://github.com/jefby/build-glog-for- ...

  4. linux 下glog的安装

    glog是google提供的一个轻量级C/C++日志库. 一.glog安装过程如下: 1.cd ~ 2.git clone https://github.com/google/glog         ...

  5. Linux C++ glog日志库的简单使用

    参考博文:C++ 命令行解析包 gflags 使用详解 例: 代码 #include <glog/logging.h> #include <iostream> #include ...

  6. GoogleLog(GLog)源码分析

    GLog是Google开发的一套日志输出框架.由于其具有功能强大.方便使用等特性,它被众多开源项目使用.本文将通过分析其源码,解析Glog实现的过程. 该框架的源码在https://github.co ...

  7. Linux 下高级日志文件查看器Log File Navigator

    Log File Navigator,简称lnav,是一款面向小规模的适用于 Linux 的高级日志文件查看器.它是一个终端应用程序,可以理解您的日志文件,让您轻松找到问题,几乎不需要什么设置. ln ...

  8. 2017年4月25日(日志库glog)

    原博客:http://www.cnblogs.com/kuliuheng/p/5046101.html 使用文档说明:http://www.yeolar.com/note/2014/12/20/glo ...

  9. 【杂谈】菜鸟误入linux会有哪些惨痛的经历

    要想AI学的好,那就得linux系统用的好.放弃windows系统,只用linux系统是你学习AI,或者说做一个合格程序猿的基础.今天我的目的不是教大家如何使用linux,而是带大家吐槽下linux让 ...

最新文章

  1. linux服务器的功能需求,Linux下的各种服务器技术及配置 (毕业论文).doc
  2. 用了GradientDrawable后,当点击控件时,控件大小发生变化
  3. boost::regex模块实现以编程方式生成代码片段,以便剪切并粘贴到正则表达式源中测试程序
  4. VTK:可视化之CursorShape
  5. redis深度历险:核心原理与应用实践_玩转Redis,阿里技术带你从核心原理到应用实践,一份文档全掌握...
  6. 根据Value对Map中的对象进行排序
  7. nginx location的命中过程
  8. HTML中段落标签和换行标签分别是,HTML 基本标签
  9. 20191003每日一句
  10. 台达服务器AB和B2系列区别,台达伺服各系列区别
  11. javamail课设_JavaMail简易教程
  12. XMind 8 Pro 激活破解
  13. TeeChart Pro Activex 2022.1/32/64/Crack
  14. Eclipse下载版本的选择
  15. 二叉树的深度遍历和广度遍历
  16. 摄影测量简答题和作图题
  17. questasim仿真优化加速问题(object无信号,无法看波形,(vsim-12110) All optimizations are disabled,error loading design)
  18. java list筛选数据_java 根据条件在List中筛选出符合条件的对象
  19. wireshark分析无线wifi包
  20. MyBatis批量的增删改查操作

热门文章

  1. app上传到安卓各大市场
  2. python canvas画弧度_编程作战丨如何利用python绘制可爱皮卡丘?
  3. echarts绘制函数曲线
  4. 最长单词(LintCode)
  5. cc联盟网-中国最佳电子商务托管平台
  6. iOS程序模块化设计
  7. hadoop2.6伪分布+pig0.15+zookeeper3.4.6安装
  8. Android 解决程序启动时的黑屏问题
  9. 哈佛架构和冯诺依曼架构
  10. 如何修改PDF并调整页面尺寸大小