Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。


1、开源项目首页https://github.com/google/glog。当前主版本是0.3.4。

2、下载代码后,双击根目录下的google-glog.sln,Visual Studio 2015提示先进行迁移,成功后就可以编译了。

3、在解决方案下有四个工程:libglog(是动态链接库工程,生成libglog.dll和libglog.lib),libglog_static(是静态库工程,生成libglog_static.lib,运行时不需要libglog.dll),logging_unittest和logging_unittest_static是相应的测试工程。

4、不需要更改工程属性。平台工具集是否是Windows XP(v140_xp)好像并不影响。Glog不支持Unicode宽字符集,工程属性字符集保持多字节字符集。“C/C++”-“代码生成”中的“运行库”,libglog动态库工程必须选择“多线程DLL”或“多线程调试DLL”,libglog_static静态库工程必须选择“多线程”或“多线程调试”。

5、按需要编译库。以静态库为例,动态库多一步将libglog.dll拷贝到程序目录下。分别编译Debug和Release,将Debug版的重命名为libglog_static_d.lib。将编译的lib文件拷贝到根目录\src\glog下,\src\glog是头文件目录。这个版本的静态库在试用时并未发现有内存泄露问题。

6、将\glog目录(包括了头文件和库文件)拷贝到自己的工程目录下。也可以新建另外的库目录,也可以在工程属性的附加目录中增加相应目录,这里采用在代码文件中控制。在工程资源管理器中添加glog头文件,如果先添加glog目录再添加头文件会提示glog头文件中的#include路径出错,手动删除路径中的“glog\”可解决。

7、在需要的地方#include “glog/logging.h”。建议添加到stdafx.h中。

8、使用静态库必须添加#define GOOGLE_GLOG_DLL_DECL。动态库不必添加。

9、因windows.h中定义的宏ERROR,与glog中定义的宏ERROR冲突,所以如果#include <windows.h>后要添加#define GLOG_NO_ABBREVIATED_SEVERITIES,并且代码中要用google::GLOG_ERROR来代替原来的google::ERROR,相应的其他也改为:GLOG_INFO、GLOG_WARNING、GLOG_FATAL。

10、添加库文件:#pragma comment(lib,“glog/libglog_static.lib”)。针对Debug和Release版,用#ifdef控制。

#define GOOGLE_GLOG_DLL_DECL
#define GLOG_NO_ABBREVIATED_SEVERITIES
#include "glog/logging.h"#ifdef DEBUG#pragma comment(lib,"glog/libglog_static_d.lib")
#else#pragma comment(lib,"glog/libglog_static.lib")
#endif // DEBUG

11、自己的工程使用静态库时,必须选择“多线程”或“多线程调试”。使用动态库则选择“多线程DLL”或“多线程调试DLL”。

12、使用glog之前必须先初始化库,要生成日志文件只需在开始log之前调用一次:

google::InitGoogleLogging(argv[0]);  //括号内是程序名
当要结束glog时必须关闭库,否则会内存溢出:
google::ShutdownGoogleLogging();

13、设置日志文件保存目录,这个目录必须是已经存在的,否则不能生成日志文件。必须在初始化库之前调用。

FLAGS_log_dir = "c:\\Logs";

14、GLOG 有四个错误级别,枚举如下:

enum SeverityLevel
{google::INFO = 0,google::WARNING = 1,google::ERROR = 2,google::FATAL = 3,
};

15、输出日志:

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

16、条件输出:

LOG_IF(INFO, num_cookies > 10) << "Got lots of cookies";  //当条件满足时输出日志LOG_EVERY_N(INFO, 10) << "Got the " << google::COUNTER << "th cookie";  //google::COUNTER 记录该语句被执行次数,从1开始,在第一次运行输出日志之后,每隔 10 次再输出一次日志信息LOG_IF_EVERY_N(INFO, (size > 1024), 10) << "Got the " << google::COUNTER << "th big cookie";  //上述两者的结合,不过要注意,是先每隔 10 次去判断条件是否满足,如果滞则输出日志;而不是当满足某条件的情况下,每隔 10 次输出一次日志信息LOG_FIRST_N(INFO, 20) << "Got the " << google::COUNTER << "th cookie";  //当此语句执行的前 20 次都输出日志,然后不再输出

17、几个函数:

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

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

google::SetStderrLogging(google::GLOG_INFO); //大于指定级别的日志都输出到标准输出
18、几个参数设置:

FLAGS_logtostderr = true;  //设置日志消息是否转到标准输出而不是日志文件FLAGS_alsologtostderr = true;  //设置日志消息除了日志文件之外是否去标准输出FLAGS_colorlogtostderr = true;  //设置记录到标准输出的颜色消息(如果终端支持)FLAGS_log_prefix = true;  //设置日志前缀是否应该添加到每行输出FLAGS_logbufsecs = 0;  //设置可以缓冲日志的最大秒数,0指实时输出FLAGS_max_log_size = 10;  //设置最大日志文件大小(以MB为单位)FLAGS_stop_logging_if_full_disk = true;  //设置是否在磁盘已满时避免日志记录到磁盘

19、例子:

// Start google log system:
FLAGS_log_dir = "c:\\Logs";
google::InitGoogleLogging(argv[0]);
google::SetLogDestination(google::GLOG_INFO, "c:\\Logs\\INFO_");
google::SetStderrLogging(google::GLOG_INFO);
google::SetLogFilenameExtension("log_");
FLAGS_colorlogtostderr = true;  // Set log color
FLAGS_logbufsecs = 0;  // Set log output speed(s)
FLAGS_max_log_size = 1024;  // Set max log file size
FLAGS_stop_logging_if_full_disk = true;  // If disk is full
char str[20] = "hello log!";
LOG(INFO) << str;
CStringA cStr = "hello google!";
LOG(INFO) << cStr;
LOG(INFO) << "info test" << "hello log!";  //输出一个Info日志
LOG(WARNING) << "warning test";  //输出一个Warning日志
LOG(ERROR) << "error test";  //输出一个Error日志
google::ShutdownGoogleLogging();

ubuntu16下载与安装

github下载地址

1.安装
./autogen.sh && ./configure && make && make install
2.复制库
sudo cp -r /usr/local/lib/libglog* /usr/lib
3.Cmakelists.txt
target_link_libraries(control libglog.so)

Google日志glog相关推荐

  1. google的glog日志管理

    在做C/C++项目的时候,开发阶段,日志信息越详细越好,出问题一目了然,当然,所占用的空间自然越多.如果项目上线,没有日志的控制管理,后续的问题会很麻烦.比如:日志量大,磁盘空间不够用,也很难选出有用 ...

  2. 谷歌日志glog库的使用

    1.glog基本使用_狂奔之林的博客-CSDN博客_glog使用 2. c++ - 'System' : a namespace with this name does not exist - Sta ...

  3. google log/glog

    http://www.yeolar.com/note/2014/12/20/glog/  ***Glog使用文档

  4. google glog使用指南

    Google Logging (glog) 是一个 C++98 库,用于实现应用程序级日志记录.该库提供了基于 C++ 风格流和各种帮助宏的日志 API. 入门 您可以通过简单地将内容流式传输到LOG ...

  5. C++系统日志库精选:深入剖析glog与log4cplus,轻松搭建高效日志系统

    目录标题 引言 日志系统的重要性 glog与log4cplus简介与应用场景 C++日志系统库的选择依据 glog基础知识 glog库的关键功能 glog库的安装与使用 glog库的基本日志功能与级别 ...

  6. java applog_Java Web App: 选择与配置日志库

    Java世界里,日志库就和许多其他库[1]一样,你有多个选择,多个还不错的选择,比如log4j, java.util.logging, logback, 另外还有一些统一的log api,比如slf4 ...

  7. [转] GLOG 使用

    0 下载及编译 从网络上搜索即可得到下载链接.然后编译(本人编译的是静态链接库libglog_static),编译过程中可能会报出如下错误. (0)"min " 不是std成员: ...

  8. glog spdlog性能对比

    先给结果:(单位:个消息/毫秒,越大越好) glog    spdlog    spdlog(file:line)    spdlog(glogformat) 406        458       ...

  9. GLOG从入门到入门

    GLOG从入门到入门 1 C++日志需求 任何可用的工程代码,都无法保证不出bug.因此,日志系统对于工程代码非常重要.对于像耳东小白这样的初级程序员(感谢某高级程序员大佬赐予"初级程序员& ...

最新文章

  1. 在Ubuntu 14.04 64bit上安装CHM阅读器KchmViewer 5.3
  2. 苹果和Siri的七年之痒:Siri的落寞之路
  3. 人类第一次将42写成3个整数的立方和,最后一个100以内的自然数告破
  4. oracle9i用expdp导出全库,Linux下Oracle 11g数据库全库自动备份(EXPDP)
  5. 看动画学算法系列之:后缀树suffix tree
  6. gan pytorch 实例_GaN教程(1)|美国宜普(EPC)公司推出“如何使用氮化镓器件”系列视频教程,讲授GaN功率晶体管和集成电路设计的方方面面...
  7. 使用phpunit新建项目
  8. 2015-11-16
  9. server之后安装ssms失败 安装sql_SQL Server 2019怎么安装?SQL Server 2019详细安装使用教程及SSMS连接...
  10. AngularJS判断checkbox/复选框是否选中并实时显示
  11. python 3.8.0安卓_Python 3.8.0 正式版发布,新特性初体验
  12. FLEX- MDI窗口开发实例
  13. Linux 用户空间审计系统
  14. c语言中有符号数的补码,[分享]带符号数的表示-----补码
  15. 达人评测 联想小新Pro16和小米笔记本Pro15选哪个好
  16. 部署本地thinkphp6(iis+php7)
  17. PEWIN32 PRO site key
  18. Java多文件压缩下载解决方案
  19. 损失函数(Loss)
  20. python AIOT教程一1.必备多元函数微分学理论基础

热门文章

  1. 栅格图像 转_RAC软件课堂丨这项AI图像描摹,90%的人都不知道!学会就是出图大佬!...
  2. centos7 重启网络服务命令
  3. 什么游戏蓝牙耳机好?2022推荐适合苹果手机吃鸡的蓝牙耳机
  4. 用Python 玩转微信跳一跳(带源码)
  5. 项目中2个Token的原因
  6. TideSec远控免杀学习三(Venom+Shellter)
  7. 游险理赔项目有哪些?
  8. 惜冰 的Linux软件清单
  9. flyway常用配置_flyway解决
  10. matlab读取视频VideoReader类