服务端编程需要做到 Log Everything All The Time
日志系统分为前后端,前端将信息传到后端,后端负责存储日志。
问题1:程序崩溃最后的日志崩溃怎么办?
不能每条日志都flush硬盘,更不能每条日志都open/close file。
muduo采用两个方法
- 定期(默认3秒)将缓冲区日志flush到硬盘
- 每条内存中的消息都带有cookie(哨兵/sentry),其值为某个函数的地址,这样通过coredump文件查找cookie就能找到尚未写到磁盘的消息。
Moudu的几条优化措施
- 只需要格式化微秒
- 前四个字段定长,避免调用strlen,memcpy可以更高效工作
- 线程id预先格式化为字符串
3. 多线程异步日志
- muduo采用双缓冲技术写日志,
