Google-glog 日志库使用手记

google-glog:开源c++轻量级日志库 Google glog is a library that implements application-level logging. This library provides logging APIs based on C++-style streams and various helper macro. 阅读详情

Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。试用了一下,感觉不错,试用过程出了不少插曲。

1、开源项目首页已经从https://code.google.com/p/google-glog/迁移到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控制。

复制代码

1 #define GOOGLE_GLOG_DLL_DECL
2 #define GLOG_NO_ABBREVIATED_SEVERITIES
3 #include "glog/logging.h"
4 
5 #ifdef DEBUG
6     #pragma comment(lib,"glog/libglog_static_d.lib")
7 #else
8     #pragma comment(lib,"glog/libglog_static.lib")
9 #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();

复制代码

 

使用GLOG记录数据实例 通过GLOG记录数据 在做实验时,往往需要记录实验数据,而以excel文档的方式记录数据往往会因为文档未关闭,而没有将数据写入文档,所以最好采用log的方式记录数据。 本文采用glog来记录数据,glog是Google发布的一款基于程序等级记录日志信息的c++库,编程使用方式与c++的stream类似。 安装方法可以参见博客:https://blog.csdn.net/liuxiaodong400/article/details/102972816?spm=1001.2014.3001.5501 GLOG 阅读详情

相关推荐

C++日志类libglog使用

glog简介  Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,例:        LOG(INFO) “LOG”宏为日志输出关键字,“INFO”为严重性程度。 主要支持功能: 1, 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为; 2, 严重性分级,根据日志严重性分级记录日志; 3,

sunflover454的专栏 3896

Google 出的C++轻量级日志库_GLog_了解_使用

Google 出的C++轻量级日志库_GLog_了解_使用

qq_44681788的博客 6229

日志库笔记<一>——Windows下安装Google-glog(vs2012版本)

想要在MFC下做一个日志显示和记盘的功能,查了网上很多的日志库,很多人都推荐使用轻量级的Google-glog。下面给出安装的步骤: 一.前期工作 1.下载glog框架。下载地址:https://github.com/google/glog。最新版本的需要cmake构建工具进行编译,v0.3.4的都不需要直接点击glog.sln编译即可。但是看网上很多人说老版本的性能不好,于是我还是乖乖的下了新版本的。 版本的选择点击界面的release进行选择。 2.下载cmake。下载地址:https://

weixin_37642704的博客 787

(转)Google-glog 日志库使用手记

(转)Google-glog 日志库使用手记作者:高张远瞩(HiLoveS)博客:http://www.cnblogs.com/hiloves/转载请保留该信息 Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。试用了一下,感觉不错,试用过程出了不少插曲。1、开源项目首页已经从https://code.google.com/p/google-g...

blacet的专栏 544

在Windows上编译、应用glog

glog是google提供的一个开源的C++日志库。由于最新的glog源码工程中,已经移除了“.sln”文件,代之以“a CMake build system”,在Windows平台下应用最新的glog库,需要自行使用CMake来生成适用不同版本VS的“.sln”文件。这个过程相对来说,有点小繁琐,特以此文记录并分享给大家。 注: glog下载链接:https://github.com/goo

Sagittarius_Warrior的博客 1万+

跟我从零开始开始学glog (Google的C++日志库)

最近在写自己的网络库的时候用到了日志库,本来想自己从0开始写一个,想想还是算了,毕竟时间和精力是有限的,先会用别人的,站在巨人的肩膀上才能走的更远嘛。

段长风 576

日志库-Glog介绍

glog 是 Google 的一个 C++ 日志库,它提供了丰富的日志功能,包括条件日志、CHECK 宏等,同时支持日志的自动轮转。项目Valueyyyy年mm月dd日时间threadid线程IDfile文件名line行号msg消息glog 是一个功能丰富的日志库,它提供了一系列的宏和函数来处理日志记录。初始化和关闭: google::InitGoogleLogging(const char* argv[]): 初始化 glog日志系统。通常在 main 函数的开始处调用。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 1660

【C++】开源:glog日志库配置使用

glog配置使用

DevFrank的博客 1958

C++第三方日志库Glog的安装与使用超详解

一、glog介绍 二、glog下载 三、环境介绍 三、glog的编译详解 3.1 利用CMake进行编译,生成VS解决方案 3.2 利用VS对项目进行编译 四、glog的基本使用 4.1 创建VS项目 4.2 将glog相关文件包含在项目中 4.3 编写代码进行测试 4.4 测试代码2 五、代码详解 5.3 InitGoogleLogging 5.4 Shutdown Google Logging(glog)是一个实现应用程序级日志记录的C++98库。该库提供了基于C++风格流和各种辅助宏的日志API。

Wendy的博客 2万+

ByteTrack参数调优全攻略:从原理到实战(含YOLOv8示例)

本文深入解析了ByteTrack多目标跟踪算法的核心原理与参数调优策略。通过拆解其独特的两阶段关联机制,并结合YOLOv8检测器,提供了针对不同应用场景(如拥挤行人、高速车辆)的精细化参数调整指南与实战示例,旨在帮助开发者解决ID切换、目标丢失等工程落地难题,提升跟踪系统的鲁棒性与实用性。

cheese的博客 322

【图形学】后处理下的HDR、颜色分级、颜色映射与颜色空间

目录 一、Color Grading 1.1概念 1.2 内置在Unity/UE4 二、HDR、LDR与VDR 2.1 LDR 2.2 HDR 2.3 VDR 三、Tone Mapping 3.1 概念 3.2 算法发展史 3.3 ACES算法 四、常见的颜色空间标准 参考 一、Color Grading 1.1概念 Color Grading(颜色分级、颜色校正)俗称调色,是游戏后期处理中最常见也是必要的一个环节。它能够改变或矫正最终图像的颜色和亮度,你可以把它想象...

ColorGalaxy 8419

如何使用google日志库(glog)

简介 google的glog是一个实现应用程序级别的日志的库。这个库提供了C++风格的流式的一系列的打日志的API以及很多助手宏定义。通过简单的将对象流式的传给LOG(特定的重要级别)对象就可以记录日志消息。 #include <glog/logging.h> int main(int argc, char* argv[]) { // Initialize Google'...

Jeff_Dean的博客 2920

手把手教你打造CTF动态靶场

公司想搞一个CTF比赛,需要一个竞赛靶场,于是这个任务就落在了我的身上,平台是利用CTFd框架,基于docker搭建的动态靶场,搭建过程中遇到的坑比较多,这里我会把每一个遇到的坑都指出来。我搭建的是CTFd的3.X的版本。第一次搭建的话,搭建的过程会有些痛苦,但是搭建完成后会越来越熟练,这个平台的可用性还是很高的。由于搭建的过程中遇到的坑太多了,各种各样的问题,所以决定写下这篇文章,把所有的坑都指出来,也算为后边想搭这个平台的小伙伴指一条路。Taps:资源来源:星海安全实验室如果你也对网络安全&黑客。

Python栈 4933

google开源日志库glog安装(windows)

google/glog C++ implementation of the Google logging module 1 按照git上的命令发现的问题: git clone https://github.com/google/glog.git ./autogen.sh && ./configure && make && make ins...

南山墓碑的Blog 3550

可乐学习NVMe之一:为什么SSD需要NVMe

1. NVMe SSD 结构简图 整体来看,NVMe SSD可以分为三部分,host端的驱动NVMe Driver、PCIe+NVMe实现的控制器以及NAND Flash+DDR4/DDR5存储介质。 芯片回片后Host侧软件或者驱动开发主要在应用层,通过一些测试工具进行benchmark跑分测试,performance性能分析,latency分析、stress-testing等等: 那么,接下来阐述为什么SSD需要NVMe,并再后续的文章介绍NVMe协议分析,个人针对协议的理解,如果有不当之处,还请各

Lucky 3169

Cadence Allegro 17.2 PCB设计避坑指南:从焊盘制作到封装绘制的完整流程

本文详细解析了Cadence Allegro 17.2在PCB设计中的关键操作技巧,从焊盘制作到封装绘制的完整流程。通过0402电阻和2.54mm排针的实例,揭示新手常见错误及解决方案,包括焊盘参数设置、层类型区分和坐标输入规范,帮助工程师避免设计返工和生产事故。

weixin_28683391的博客 407

C 开源日志库 Glog的使用

C 开源日志库 Glog的使用

hggjgff的博客 1171

基于UC3842的反激电源的全面深入解析与MATLAB仿真

内置电流检测,可实现电流模式控制,提高系统的动态响应性。多种保护功能,如欠压锁定、过温保护、短路保护等,确保系统的安全可靠运行。宽工作电压范围,适应不同的电源设计需求。简单的外部元件配置,易于实现。UC3842的典型应用包括开关电源、DC-DC转换器和反激式电源等,其稳定性和可靠性在实际应用中得到了广泛验证。

qq_38334677的博客 1086

glog源码阅读笔记

glog 源码阅读笔记

zhaoyqcsdn的博客 2229

多思计组实验实验六 微程序控制器实验

实验六 微程序控制器实验

qq_53089329的博客 3781

音频——DAC 性能测试

codec DAC 性能测试方法

tyustli 2235

GOOGLE GLOG 日志使用心得

c++项目中想尝试些新的东西,google glog日志中间件功能挺全面,测试的效率也比较OK, 测试数据未作记录。 google glog官方网站  https://code.google.com/p/google-glog/ 文档和源码下载均可从上面的地址中获取,我展示下我所用到的部分: 1.include源文件            #include 2.日志模

Demon的专栏 2万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C++ Windows下Glog日志库安装使用教程

2018年是我写过一个关于Glog使用的教程(https://blog.csdn.net/qq_27278957/article/details/84648912),但是最近再使用时,发现和当时使用方法有所不同,所以再重新整理一份。 一、简述 Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。 二、环境 windows 10 + vs2017 + Glog v0.5.0+ cmake 三、安装Glog 1、在Glog官方中下载Glog代码,.

qq_27278957的博客 7551

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

vs2017使用google开源日志库glog

吭呲了俩小时搞定,这效率真够可以的。扒一堆博客,个个写的都不爽利。 预备:vs2017、cmake、glog cmake安装文件去官网找,个人下载的msi文件直接安装的,安装时默认是不添加到环境变量,修改为为所有用户添加到环境变量。本地安装完成后,cmd查看:cmake --version。 glog从github下载。 glog文件夹下打开cmd,依次命令: cmake . cmak...

fx_odyssey的博客 1607

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: vs2013下配置ceres solver
下一篇: 一步步实现slam3-初始位置估计2
everagain
博客等级 码龄18年 5粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值