服务端编程需要做到 Log Everything All The Time

日志系统分为前后端,前端将信息传到后端,后端负责存储日志。

问题1:程序崩溃最后的日志崩溃怎么办?
不能每条日志都flush硬盘,更不能每条日志都open/close file。
muduo采用两个方法

  1. 定期(默认3秒)将缓冲区日志flush到硬盘
  2. 每条内存中的消息都带有cookie(哨兵/sentry),其值为某个函数的地址,这样通过coredump文件查找cookie就能找到尚未写到磁盘的消息。

Moudu的几条优化措施

  1. 只需要格式化微秒
  2. 前四个字段定长,避免调用strlen,memcpy可以更高效工作
  3. 线程id预先格式化为字符串

3. 多线程异步日志

  1. muduo采用双缓冲技术写日志,