改造前是这样的:
改造后是这样的:
时间戳改成本地的了,线程id 改成了[线程id],函数名称放到最后。看一下这个打印日志宏:
#define LOG_TRACE if (muduo::Logger::logLevel() <= muduo::Logger::TRACE) \
muduo::Logger(__FILE__, __LINE__, muduo::Logger::TRACE, __func__).stream()
在上一篇 这里 讲过,这里创建一个匿名对象。调用的构造函数是这个版本的:
而在初始化列表里就调用了成员 impl_的构造函数,看一下其构造函数内容:
所以当调用完 Logger 的构造函数,impl_ 里已经有了日期时间、线程id、打印等级这些字符串了, 然后在执行完LOG_TRACE 后匿名对象被销毁,所以要调用 Logger 的析构函数:
在 Impl 对象的 finish() 函数里,把文件名、行号、函数名加上,最后输出到stdout。