1.日志类封装
- Logger使用时序图,具体解释见P20或者代码
#define LOG_INFO if (muduo::Logger::logLevel() <= muduo::Logger::INFO) \
muduo::Logger(__FILE__, __LINE__).stream()
LOG_INFO<<“info ...”; // 使用方式
muduo::Logger(__FILE__, __LINE__).stream()<<“info”;
Logger => Impl => LogStream => operator<< FixedBuffer => g_output => g_flush
-
LogStream类图
-
Logger类图
-
在FixedBuffer模板类中,假设给缓冲区data_中添加2个字节数据,data_指针是不会变的,因为他是缓冲区的首地址;
const char* debugString();//增加\0,将当前数据变成字符串
-
eg:21\jmuduo\muduo\base\LogStream.cc
21\jmuduo\muduo\base\LogStream.h -
eg测试:21\jmuduo\muduo\base\tests\LogStream_test.cc
21\jmuduo\muduo\base\tests\CMakeLists.txt -
测试:
-
eg测试:21\jmuduo\muduo\base\tests\LogStream_bench.cc
21\jmuduo\muduo\base\tests\CMakeLists.txt -
测试:性能基准测试,使用Boost单元测试框架
2.StringPiece类
- eg:21\jmuduo\muduo\base\StringPiece.h