0

0

C++怎么使用Google glog库_C++高性能应用日志记录框架glog入门

下次还敢

下次还敢

发布时间:2025-11-23 17:41:02

|

245人浏览过

|

来源于php中文网

原创

Google glog 是一个高效的 C++ 日志库,支持分级日志、条件记录和文件分割。通过 #include 引入,需调用 google::InitGoogleLogging() 初始化,使用 LOG(INFO) 等宏输出带时间戳、文件名和行号的日志信息,FATAL 级别会终止程序。日志默认输出到 stderr,可通过 FLAGS_log_dir 指定目录或 SetLogDestination 设置路径,编译时链接 -lglog -lpthread。高级功能包括 LOG_IF 条件日志、LOG_EVERY_N 限频输出、DLOG 调试日志及 CHECK 断言机制。glog 线程安全,但需确保日志目录有写权限,适合高性能服务的可观测性需求。

c++怎么使用google glog库_c++高性能应用日志记录框架glog入门

Google glog 是一个高效、灵活的日志库,广泛用于 C++ 项目中。它支持分级日志(INFO、WARNING、ERROR、FATAL)、条件日志、回滚日志文件、按大小分割等功能,非常适合高性能服务程序的日志记录需求。

安装与配置 glog

在使用 glog 前,需要先安装。以 Ubuntu 为例:

sudo apt-get update
sudo apt-get install libgoogle-glog-dev

如果你使用的是 macOS,可以通过 Homebrew 安装:

brew install glog

源码编译方式也支持跨平台使用,可从 GitHub 仓库 获取源码并构建。

立即学习C++免费学习笔记(深入)”;

基本使用方法

引入头文件并使用宏输出日志信息:

#include 

int main(int argc, char* argv[]) { // 初始化 glog google::InitGoogleLogging(argv[0]);

// 输出不同级别的日志
LOG(INFO) << "这是信息日志";
LOG(WARNING) << "这是一个警告";
LOG(ERROR) << "发生了一个错误";
// LOG(FATAL) << "致命错误,程序将终止";

return 0;

}

说明:

PaperAiBye
PaperAiBye

支持近30多种语言降ai降重,并且支持多种语言免费测句子的ai率,支持英文aigc报告等

下载
  • LOG(INFO) 等宏会自动包含文件名、行号、时间戳等信息。
  • InitGoogleLogging() 必须调用,通常传入程序名。
  • FATAL 级别日志会触发程序退出。

设置日志输出目录和格式

默认日志输出到 stderr,可通过设置将日志写入文件:

// 设置日志输出目录
google::SetLogDestination(google::GLOG_INFO, "/tmp/myapp.INFO.");
google::SetLogDestination(google::GLOG_WARNING, "/tmp/myapp.WARNING.");
google::SetLogDestination(google::GLOG_ERROR, "/tmp/myapp.ERROR.");

或通过命令行参数控制:

FLAGS_logtostderr = 0;          // 不输出到终端
FLAGS_alsologtostderr = 1;      // 同时输出到文件和终端
FLAGS_log_dir = "/tmp";         // 指定日志目录

编译时需链接 glog 库:

g++ main.cpp -lglog -lpthread -o myapp

高级功能:条件日志与调试日志

glog 提供了更精细的控制方式:

  • LOG_IF(INFO, condition):满足条件才记录日志。
  • LOG_EVERY_N(INFO, 100):每 100 次记录一次,避免日志爆炸。
  • DLOG(INFO) :仅在 DEBUG 模式下生效。
  • CHECK(condition) :断言失败时输出日志并终止程序。
for (int i = 0; i < 1000; ++i) {
    LOG_EVERY_N(INFO, 100) << "第 " << i << " 次循环";
}

int* ptr = nullptr; CHECK(ptr != nullptr) << "指针不能为空!";

基本上就这些。glog 的设计简洁高效,适合嵌入到各种规模的 C++ 项目中。只要初始化正确、合理使用级别和输出方式,就能显著提升程序的可观测性。不复杂但容易忽略的是日志路径权限和线程安全——glog 本身是线程安全的,但确保日志目录可写很重要。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

187

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

280

2023.10.25

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

481

2023.08.10

macOS怎么切换用户账户
macOS怎么切换用户账户

在 macOS 系统中,可通过多种方式切换用户账户。如点击苹果图标选择 “系统偏好设置”,打开 “用户与群组” 进行切换;或启用快速用户切换功能,通过菜单栏或控制中心的账户名称切换;还能使用快捷键 “Control+Command+Q” 锁定屏幕后切换。

332

2025.05.09

常见的linux系统有哪些
常见的linux系统有哪些

linux系统有Ubuntu、Fedora、CentOS、Debian、openSUSE、Arch Linux、Gentoo、Slackware、Linux Mint、Kali Linux。更多关于linux系统的文章详情请阅读本专题下面的文章。php中文网欢迎大家前来学习。

800

2023.10.27

ubunt上安装和配置vnc
ubunt上安装和配置vnc

安装方法:安装VNC服务器、启动VNC服务器、设置VNC密码等等。想了解更多ubuntu的相关内容,可以阅读本专题下面的文章。

409

2023.12.28

ubuntu启动黑屏解决方法
ubuntu启动黑屏解决方法

ubuntu启动黑屏解决方法:检查是否是电源问题、检查内存是否接触不良、检查显卡问题等。想了解更多ubuntu的相关内容,可以阅读本专题下面的文章。

656

2023.12.28

为什么ubuntu有网络连接但不能上网
为什么ubuntu有网络连接但不能上网

ubuntu有网络连接但不能上网的原因:1、dns配置问题;2、代理服务器设置问题;3、网络防火墙设置问题;4、路由器或调制解调器设置问题;5、网络驱动程序问题;6、网络配置文件问题;7、其他问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

452

2024.09.05

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

27

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.7万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号