muduo Logging详解

1. 简介

Logging用于将日志事件信息(时间 日志级别 文件名 行号等)加到输出缓冲区,默认输出到stdout。

2. 类与接口

① 私有内部类Impl
将日志事件(时间 日志级别 文件名 行号等)信息加到输出缓冲区具体实现

② 公共内部类SourceFile
计算源文件basename

③ 一些重要成员函数
4种构造函数,根据参数将额外信息加到输出缓冲区
析构函数把LogStream缓冲区中的内容取出来,由g_output控制输出到特定文件,默认为stdout

typedef void (OutputFunc)(const char msg, int len);
输出的控制函数,默认输出到stdout

typedef void (*FlushFunc)();
刷新的回调函数,默认刷新标准输出

④ 日志宏定义
如果level<=当前级别,用一个匿名Logger对象,调用stream(),返回一个LogStream类型的引用,这个类重载了<<运算符,然后把信息输入到缓冲区

⑤ 普通全局变量
g_output 日志输出

g_flush 日志刷新

g_logTimeZone 时区信息

⑥ 线程局部变量
t_errnobuf 存储errno描述信息

t_time 存储格式化后的时间信息

t_lastSecond 记录上一次记录的时间,在Impl的formatTime()中使用,如果时间不同才更新

3. 一般流程

前端线程使用LOG_XX宏定义记录日志信息,宏会调用Logger构造函数生成匿名Logger对象并返回该对象的impl_.stream_,stream_为LogStream的引用,此时LOG_XX << ...会调用LogStream重载的<<将日志信息存入LogStream内部Buffer,Logger对象析构时会取出内部impl_.stream_的Buffer,并由g_output控制输出到特定文件,默认为stdout。

4. 参考

https://www.icode9.com/content-4-399239.html
Github

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值