首页 关于我们 成功案例 网络营销 电商设计 新闻中心 联系方式
QQ联系
电话联系
手机联系

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

发布时间:2025-11-23 17:41
发布者:网络
浏览次数:
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 仓库 获取源码并构建。

基本使用方法

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

#include <glog/logging.h>
<p>int main(int argc, char* argv[]) {
// 初始化 glog
google::InitGoogleLogging(argv[0]);</p><pre class='brush:php;toolbar:false;'>// 输出不同级别的日志
LOG(INFO) << "这是信息日志";
LOG(WARNING) << "这是一个警告";
LOG(ERROR) << "发生了一个错误";
// LOG(FATAL) << "致命错误,程序将终止";

return 0;

}

说明:

PictoGraphic PictoGraphic

AI驱动的矢量插图库和插图生成平台

PictoGraphic 133 查看详情 PictoGraphic
  • 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.");
</font><p>或通过命令行参数控制:</p><font color="#0000FF"><pre class="brush:php;toolbar:false;">
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 << " 次循环";
}
<p>int* ptr = nullptr;
CHECK(ptr != nullptr) << "指针不能为空!";</p>

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

以上就是C++怎么使用Google glog库_C++高性能应用日志记录框架glog入门的详细内容,更多请关注其它相关文章!


# git  # go  # github  # app  # ubuntu  # mac  # ai  # c++  # macos  # google  # cos  # 高性能  # 行号  # 第三方  # 的是  # 是一个  # 可通过  # 这是  # 如果你  # 就能  # 这是一个  # 达州网站优化推广费用  # 纹绣营销推广话术技巧  # 搜索引擎关键词排名dl大-将-军氵  # 赣州网站建设优化排名  # 网站建设准备方案  # 深圳罗湖视频营销推广  # 宝鸡seo优化有价值吗  # 粤海外贸网站建设  # 鱼峰区独特网站建设  # 深圳新品网站推广