问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何从零写一个日志库(glog介绍)

发布网友 发布时间:2024-05-06 22:45

我来回答

1个回答

热心网友 时间:2024-05-29 01:55


探索日志管理的艺术,本文将深入解析glog——谷歌开源的日志库,为你揭示从零开始构建自定义日志解决方案的关键要素。让我们一起从基本需求到高级接口,一窥其内部工作原理。


基本需求与核心组件

glog的核心在于LogMessage类,它负责记录日志的时间、位置信息以及根据过滤条件进行输出。0.3.5版本作为起点,提供了诸如LOG、LOG_IF和LOG_TO_SINK等接口,让你能灵活定制输出到默认目标或自定义sink。


获取glog的源代码:https://github.com/google/glog.git,源码中的src/glog/http://logging.h.in是你探索之旅的起点。


关键接口详解

LOG(severity):这是基础接口,将日志发送到默认输出,如LOG_ERROR = LogMessage(FILE, LINE, GLOG_ERROR)。


LOG_IF(severity, condition):条件式过滤,如LOG_IF(severity, !condition) & LOG(severity),只在满足条件时记录。


LOG_TO_SINK(sink, severity):直接将日志导向自定义sink,同时不遗漏默认输出。


宏定义的艺术

通过VLOG、LOG_TO_STRING和SYSLOG_IF等宏,你可以根据需求进行灵活的抽样和条件输出。例如,VLOG_IF(INFO, condition)在满足条件时增加日志的可见性,VLOG_EVERY_N则进行抽样记录。


深入日志流程

glog的过滤机制依赖于LOG_IF,它根据FLAGS_minloglevel调整记录行为,避免不必要的CPU开销。LogMessage的构造和析构处理日志记录,而Stream函数确保与输出操作的兼容性。


在使用时,如LOG(INFO) << "log test",实际上会先检查条件,然后输出,返回值为void以保持与"<<"操作符的配合。


高级定制与性能优化

LogMessageData结构体提供了30000字节的流式输出能力,通过LogDestination和Logger接口,实现灵活的日志目标管理,如支持异步写入的MyAppLogSink。


尽管glog提供了强大的基础,但其在多线程写入和日志文件类型上的限制需要通过sink接口进行扩展,以适应复杂环境下的日志需求。


后续章节预告

接下来的文章将深入讨论FATAL日志和coredump的生成过程,带你了解glog在故障诊断中的关键作用。


总之,glog不仅是一个强大的日志库,更是日志管理策略的灵活载体。掌握它,为你的项目增添强大的故障排查能力。敬请期待《深入解析glog的FATAL与coredump》。


声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我有个无线路由器 G11手机无法上wifi 已经按照路由说明书上步骤安装调... g11无线网显示以连接信号强但是一上网显示网络错误 拜求解 HTC G11能连接上WLAN,信号显示“极强”但上不去网? ...可是家里的能连上就是打不开网页,我的路由是上海贝尔的那种。_百度... 我的手机HTC G11 连接上WLAN,信号很好,就是无法上网 ...连上家里的无线网,但是qq却上不去,网页也打不开,等于没练上一样... G11WIFI信号格满但是打不开网页等 就生产力发展而言,丛西汉至唐朝有何表现 汉代农业的发展程度是怎么样的? 你好 酷管家密码忘了 打不开怎么办 大连同达投诉hr怎么投诉 新版微信的漂流瓶功能是否被永久关闭? ...退群保留聊天记录功能」,在工作和生活中的作用是什么? 半百造句 怎么打开自己的QQ空间? 每个人心理想的梦想都能实现吗? 家用电烤箱不可以加热剩菜剩饭吗? 我喜欢一个男生,他是摩羯座的,如果不喜欢你会直接拒绝你吗 ...的植物,折断有白色液体,叶子有刺的感觉,和蒲公英的根也不同,叫什 ... 秦皇岛私立渤海学校(初中)怎么样啊 沧州渤海科技教育管理有限公司怎么样? 怎么删除Excel工作表中不存在的项目? excel清除单元格数据公式excel清除单元格数据公式怎么弄 我要做,我不要,我想要 形容英俊少年与美丽少女的成语还有那些,除了我想破脑袋蹦出的这些还有... 对三月的赞美 猫太子午睡枕高枕与护颈枕哪个好一点 稳步前进造句用稳步前进造句 非同一般是什么意思词语非同一般什么意思 吃隔夜鸡蛋饭中毒呕吐还可以喂母乳吗 五年级上册数学书第97页第四题怎么做?急!!! 风水先生说马桶要坐北朝南安装(房子是坐北朝南的户型)可是网上都说马桶... ...请问卫生间的马桶坐向可以是坐北朝南吗,有什么风水说发吗_百度知... 我是做千张的,那个碎边边会有些也不能浪费掉吧,想知道有什么能再加工... 有什么千张的做法大全分享? 为什么我喜欢冬天穿凉鞋 已经临近冬天了,为什么还有女生在赤脚穿凉鞋在大街上? 关于冬天穿凉鞋 辽宁征地补偿新标准及补偿金额计算方法 未能映射路径问题,怎么解决 孩子生病没去学校落下的功课班主任回去后全部给他补上了很感激... 写人记事作文如何才能写出人物的个性 请问gia证书对应一颗钻石吗 GIA证书上的号码和钻石上的号码是一致的对吧? 看好了4C如果购买主要查看... 抖音名字认证后为什么改不了? strongbodf是什么意思 用短除法找下面各组数的公因数 36和32 48和60 72和90 100和80 24... 用短除数吧50、80和100分解质因数? 小米手机一直显示MIUI界面,该怎么办? 谁知道从上海市浦东新区曹路到铺东新区世纪公园乘什么公交