• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2025-06-30 15:45 Aet 隐藏边栏 |   抢沙发  1 
文章评分 1 次,平均分 5.0

概述

  1. Google开源的C++日志库,专为高性能、高可靠性场景设计,广泛应用于大型分布式系统(如Kubernetes

优缺点

优点

  1. 高性能与线程安全
    1. 内部采用锁机制保证多线程安全,写入效率高(经Google生产环境验证)
    2. 异步I/O与缓冲区优化(如syncBuffer),减少系统调用开销
  2. 灵活的日志控制
    1. 多级别日志:INFOWARNINGERRORFATAL,支持动态调整级别(FLAGS_minloglevel
    2. 条件日志:LOG_IF(条件触发)、LOG_EVERY_N(周期记录)、LOG_FIRST_N(限次记录)
  3. 自动化日志管理
    1. 滚动归档:按大小(SetLogFileSize)或时间(需自定义扩展)分割日志文件,避免单文件过大
    2. 多目标输出:同时支持文件、控制台(FLAGS_alsologtostderr=1)及自定义路径
  4. 强制错误处理机制
    1. CHECK系列宏(如CHECK_EQCHECK_NE)替代断言,失败时打印堆栈并终止程序,便于快速定位问题

缺点

  1. 格式固定不可定制
    1. 日志前缀格式(如Lmmdd hh:mm:ss.uuuuuu threadid file:line])无法修改,仅能通过回调函数微调
  2. 功能扩展依赖源码修改
    1. 不支持按日期归档(需自行实现dailyRolling逻辑)
    2. 缺少DEBUG级别,需修改源码添加
  3. 初始化约束
    1. 必须在首个LOG()前调用google::InitGoogleLogging(),否则日志输出到STDERR

使用

安装

  1. vcpgk安装
  2. 32mt静态库

  1. 然后把vcpkg里面的库和头文件拷贝到项目中来使用

项目

  1. 示例代码为debug模式

  1. VC++目录

  1. C/C++

  1. 链接器-输入

日志示例

核心功能

级别

级别 说明 示例
INFO 普通信息(如启动成功) LOG(INFO) << "Service started";
WARNING 潜在问题(如资源不足) LOG(WARNING) << "Disk full";
ERROR 需修复的错误(如连接失败) LOG(ERROR) << "DB disconnected";
FATAL 致命错误(程序终止) LOG(FATAL) << "Memory exhausted";

条件日志宏

检查宏(替代ASSERT

调试日志(Debug模式专用)

日志滚动策略

定义前缀

声明:本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享