muduo库日志架构
转载请说明出处!!! 作者git地址:https://github.com/GavinPong
一、架构概述:
1、采用基于对象的设计:
2、每条日志都采用申请一个logger临时对象,然后获取logger对象中的logStream类成员对象,调用
logStream的<<运算符将日志缓存到logStream的Buffer类成员对象的FixBuffer成员对象的固定缓
存空间中,临时logger对象释放时,在析构函数中调用输出函数将缓存区中的日志输出;
3、具体的输出由g_output全局函数指针指定的函数将缓存中的日志输出;g_output默认输出到屏幕;
提供设置接口设置用户自己的g_output接口;
二、日志的填充原理:
1、Logger-->LogStream-->FixBuffer;
2、生成临时的logger对象,通过Logger对象获取到内部的LogStream对象,调用LogStream的<<
运算符将数据添加到LogStream的FixBuffer中,同一个对象的<<运算符将所有数据缓存到
LogStream的FixBuffer中;
三、日志输出原理:
1、Logger-->LogStream-->FilxBuffer-->outPut
2、当logger帝乡被时,在析构函数,先通过LogStream是对象将FixBuffer对象拿到,然后调用全
局的Output将FixBuffer中的数据输出;
四、类图: