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
muduo Logging详解相关推荐
- python logging详解及自动添加上下文信息
之前写过一篇文章日志的艺术(The art of logging),提到了输出日志的时候记录上下文信息的重要性,我认为上下文信息包括: when:log事件发生的时间 where:log事件发生在哪个 ...
- muduo scoped_ptr详解
1. 简介 scoped_ptr类似于智能指针只能在作用域里使用,不希望被转让. 2. 类与接口 #ifndef _SCOPE_PTR_HH #define _SCOPE_PTR_HH // scop ...
- muduo BlockingQueue详解
1. 简介 利用条件变量和std::deque实现阻塞队列 2. 类与接口 插入数据,有2个版本 void put(const T& x) 非常量可以初始化一个底层const,反过来却不行 可 ...
- muduo StringPiece详解
1. 简介 该StringPiece是PCRE的实现,是对字符串的一个proxy类而已(即设计模式中的代理模式). 2. 背景 很多时候,当传入一个字符串到函数时,往往只是读取字符串时 若使用std: ...
- muduo Date详解
1. 简介 用于Julian Day和普通年月日的转换 2. 类与接口 2.1 class Date : public copyable ① Date::Date(int y, int m, int ...
- muduo Timestamp详解
1. 简介 Timestamp用于提供时间戳相关的工具函数. 2. 类与接口 ① string toString() const 返回时间的字符串形式,例如1649224501.687051 ② st ...
- muduo Thread详解
1. 简介 Thread用于线程管理. 2. pthread_atfork 在进行linux系统里开发时,经常会调用linux的系统函数fork来产生一个子进程,如果父子进程都没有用到pthread线 ...
- muduo Mutex详解
1. 简介 多线程环境下利用pthread进行共享资源的互斥操作,该模块使用了Thread safety annotations技术,若使用了cling c++解析器,可以在编译时进行线程安全分析,如 ...
- Python日志详解【两篇就够了系列】--第一篇logging
目录 第一章 Python日志模块logging详解 一.logging的框架 1.Logger 2.Handler 3.Formater类 4.Filter类 二.Log级别 三.Log格式 四.常 ...
最新文章
- python中pygame模块的Linux下安装过程
- JMeter测试TCP/IP Socket应用的性能
- 是否有一个不区分大小写的string.Replace的替代方法?
- leetcode_longest substring without repeating characters
- wxWidgets:在全局范围内捕捉关键事件
- 内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]...
- 一个秒杀系统,居然比八股文还好使!
- android mediarecorder 输出到流_音视频的采集、编码、封包成 mp4 输出
- 计算机论文格式要求吗,论文格式
- jackson dataformat yaml简介及使用
- pythonpdf识别文字_python 提取pdf文字
- 直播提醒|今晚八点半,最硬核情感分析技术讲解来袭!内附SKEP详解+大作业指导!...
- 《软技能-代码之外的生存指南》————第二篇 自我营销
- Log4j2漏洞发展历程及解决方案
- Vue.js使用Echarts动态渲染多个图表
- 模拟linux终端测试java,Linux 伪终端(pty)
- redis 端口号为什么是 6379
- html表格怎么去除重复,在HTML中重复表格标题
- pc串口卡和plc怎么接线_计算机COM1串行口就是RS232串行口么 串行线两端的串行口与计算机和PLC怎么样的线序连接...
- 【软件测试基础理论知识】1.3软件开发模型之—敏捷开发(敏捷模型)