glog的编译,配置,使用

2023-11-20

glog是Google推出的轻量级C++ log开源库,使用起来比较简单,自己可以下载源码直接编译,支持Windows和linux

下载编译

glog下载路径

  1. https://code.google.com/p/google-glog/ 需要翻墙才能下载,目前项目已经迁移到github
  2. https://github.com/google/glog github路径
    目前github上面最新过的代码已经更新到0.3.4,本文使用0.3.3编译使用,使用环境为Windows 7,编译工具VS2013。

编译

解压下载到的压缩包glog-0.3.3.tar.gz,进入解压后的目录,可以看到工程文件,源码包中的默认工程为VS2008,工程文件名:google-glog.sln,可以使用vs2008编译,也可以使用更高版本的工具进行编译
本文采用VS2013进行编译,将工程文件使用VS2013打开,会进行自动转换,转换完成后,编译,会发现报错,见下图:
这里写图片描述
在logging.cc中增加#include <algorithm>解决该问题
编译完成后,得到3个文件 libglog.dll,libglog.lib,libglog_static.lib,这里我们使用动态库 libglog.dll,libglog.lib。

使用以及配置

头文件和 libglog.dll,libglog.lib 拷贝到自己的工程下,做好配置
头文件去源码路径下去取:glog-0.3.3\src\windows\glog

引入头文件后,可以回报一些路径错误,简单修改路径即可解决,错误如下:
logging.h中

#include "glog/log_severity.h"
#include "glog/vlog_is_on.h"

修改为:

#include "log_severity.h"
#include "vlog_is_on.h"

vlog_is_on.h中

#include "glog/log_severity.h"

修改为:

#include "log_severity.h"

头文件引入后,需要注意,需要手动添加预定义宏,才可以正常使用,否则会编译报错,添加如下:

fatal error C1189: #error :  ERROR macro is defined. Define GLOG_NO_ABBREVIATED_SEVERITIES before including logging.h. See the document for detail.

添加宏:GLOG_NO_ABBREVIATED_SEVERITIES
添加路径:C/C++->Preprocessor->Preprocessor Definitions
添加完成后,就可以正常使用了
事例如下:

int _tmain(int argc, _TCHAR* argv[])
{
    google::InitGoogleLogging((const char *)argv[0]);
    google::SetLogDestination(google::GLOG_INFO, "E:\\glogfile\\loginfo");
    google::SetLogDestination(google::GLOG_WARNING,"E:\\glogfile\\logwarn");
    LOG(INFO) << "This is a <Info> log message...";
    LOG(WARNING) << "This is a <Warn> log message...";
 }

glog配置以及使用注意

glog内部是单例的模式,只要初始化一次,就可以在工程中正常使用。
初始化的函数为:google::InitGoogleLogging(“test”);参数填写字符串即可
在工程中调用一次InitGoogleLogging,调用多次会报错,在退出的时候注意需要调用google::ShutdownGoogleLogging();结束

参数配置:
FLAGS_alsologtostderr = false;//设置false不输出日志到控制台上
FLAGS_logbufsecs = 0;//实时刷新日志到硬盘,默认是会缓冲的
FLAGS_max_log_size = 30;//日志大小大于30M时,创建新的日志
只列举了几个参数配置,具体的可以参考官方文档说明或者代码

log样例:
Log file created at: 2015/10/24 12:12:47
Running on machine: JIACUNXU
Log line format: [IWEF]mmdd hh:mm:ss.uuuuuu threadid file:line] msg
I1024 12:12:47.639955 4732 test.cpp:13] init

日志内容个是可以参照红色部分

以上为本文内容,希望对大家有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

glog的编译,配置,使用 的相关文章

随机推荐

  • CAN总线隔离器简介

    简介 LCAN OptoAdapter是一款通用插入式电隔离适配器 完全的硬件逻辑设计 可安装在CAN网络的任何位置 快速实现CAN网络之间电隔离 独有的CAN信号调理技术 可以实现改变CAN网络拓扑结构 长支线 增加节点数目等功能 独有的
  • Qt之Q_GLOBAL_STATIC创建全局静态对象

    概述 所谓的全局静态对象 大多是在单例类中所见 之前写过一篇文章介绍如何实现一个单例类 在这里 这是最常见的方式来进行创建 需要自定义 static 类对象 并进行手动初始化 而今天要说的是更简单的方式来实现 Qt 提供了一个非常方便的宏Q
  • Android Bootchart使用

    目录 1 bootchart简介 2 bootchart 在 android 平台的使用步骤 复杂方式 old 3 bootchart 在 android 平台的使用步骤 方便方式 new 4 修改bootchart抓取的停止时间 5 可能
  • 树莓派4串口配置及使用

    文章目录 改变串口的功能 使能串口 重启树莓派 安装minicom 使用minicom通信 编写连接树莓派的代码 打开串口代码 配置串口代码 关闭串口代码 读写串口 改变串口的功能 sudo nano boot cmdline txt 删除
  • intellij-idea每次都需要source bash_profile

    windows用户 为了提高效率我们在 bash profile文件中配置了简写命令 然后我们在JetBrains产品中使用的terminnal终端是git bash 发现每次重新启动JetBrains后都需要执行一下 source bas
  • Unity3D:按键生成物件,Instantia…

    在按下按键之后 可以在画面中生成之前定义好了的物体 这里使用了Instantiate函数来生成 1 先在游戏中定一个空物件GameObject 创建空物件快捷键 ctrl shift n 2 在视图中放置 3 编写脚本 脚本 SpaceCh
  • Ubuntu设置共享文件夹(解决/mnt 目录下没有 hgfs 目录)

    目录 1 Windows创建一个共享文件夹 2 在虚拟机的设置中选择Windows下的共享文件夹 3 在Ubuntu中查看共享文件夹 4 解决 mnt 目录下没有 hgfs 目录 5 设置共享文件夹以后 mnt hgfs下没有出现共享文件夹
  • 2022 ICML 论文合集(附Code和数据集)

    1 Sharp MAML Sharpness Aware Model Agnostic Meta Learning Task 元学习 代码链接 https github com mominabbass sharp maml 数据集 http
  • 链表常见题总结一

    链表可以说是笔试面试的重点 因为写一个链表相关的题可以在短时间写出来 并且考验测试人的水平 特别将平时经常做的链表的题拿上来 做个小结 1 求单链表中结点的个数 2 将单链表反转 3 查找单链表中的倒数第K个结点 k gt 0 4 查找单链
  • 【C语言】进制输出加上前缀

    对于八进制数字 它没法和十进制 十六进制区分 因为八进制 十进制和十六进制都包含 0 7 这几个数字 对于十进制数字 它没法和十六进制区分 因为十六进制也包含 0 9 这几个数字 如果十进制数字中还不包含 8 和 9 那么也不能和八进制区分
  • Fiddler抓去HTTP/HTTPS数据包

    默认情况下 Fiddler是抓不到Java程序的HTTP HTTPS的通信的 1 配置抓取HTTP HTTPS通信 只要为Java程序设置HTTP代理 指向localhost 8888即可 方法一 使用如下方式启动Java程序 java D
  • HTML 教程- (HTML5 标准)

    HTML 教程 HTML5 标准 超文本标记语言 英语 HyperText Markup Language 简称 HTML 是一种用于创建网页的标准标记语言 您可以使用 HTML 来建立自己的 WEB 站点 HTML 运行在浏览器上 由浏览
  • Angular_组件间通讯

    组件间通讯 1 组件间通讯 父组件向子组件输入属性用 Input amount number 2 组件输出属性 1 在发射的组件内部定义发射的EventEmitter对象 Output lastPrice EventEmitter
  • 有向图的拓扑排序

    给定一个 nn 个点 mm 条边的有向图 点的编号是 11 到 nn 图中可能存在重边和自环 请输出任意一个该有向图的拓扑序列 如果拓扑序列不存在 则输出 1 1 若一个由图中所有点构成的序列 AA 满足 对于图中的每条边 x y x y
  • CentOS和CentOS Stream的区别你知道吗?

    CentOS 8生命周期的结束 2020年年底的时候 红帽宣布CentOS 8将在一年后结束生命周期 当时这个消息在开发者圈子炸了锅 很多人以为CentOS要自此消失了 实际情况是CentOS并没有消失 只是名字更换为了CentOS Str
  • Spring Cloud Alibaba、Spring Cloud 版本升级、版本号对应情况和一些注意事项等

    参考文档 优质博客 https blog csdn net Thinkingcao article details 105652632 Spring官方文档 https spring io SpringCloud官方文档 https spr
  • 小米无线蓝牙耳机Air2 SE如何连接MacPro

    若设备可以搜索到小米真无线蓝牙耳机Air2 SE但无法配对 建议您 1 若设备连接了WiFi 2 4Ghz 由于蓝牙和WiFi共用天线 且工作在相同的频段 故当WiFi传输数据量较大时 蓝牙会受到干扰 建议关闭WiFi后再尝试配对 2 将左
  • @Scheduled参数及cron表达式解释

    Scheduled支持以下8个参数 1 cron 表达式 指定任务在特定时间执行 2 fixedDelay 表示上一次任务执行完成后多久再次执行 参数类型为long 单位ms 3 fixedDelayString 与fixedDelay含义
  • 2018年中国STEAM教育行业发展现状及发展前景分析

    转自 http www chyxx com industry 201801 609261 html STEAM 教育包括科学 Science 技术 Technology 工程 Engineering 艺术 Art 数学 Mathematic
  • glog的编译,配置,使用

    glog是Google推出的轻量级C log开源库 使用起来比较简单 自己可以下载源码直接编译 支持Windows和linux 下载编译 glog下载路径 https code google com p google glog 需要翻墙才能