高效的多线程日志

功能需求

功能主要包括:

  1. 日志消息的级别: TRACE, DEBUG, INFO, WARN, ERROR, FATAL

  2. 日志消息有多个目的地(appender),如文件,socket, SMTP等

对于分布式系统中的服务进程而言,日志的目的地(destination)只有一个:本地文件。

日志文件的滚动(rolling): 文件大小 & 时间
日志文件的文件名格式
日志文件的压缩与归档(archive)

日志消息的文件格式


1. 每条日志占用一行
2. 时间戳精确到微妙
3. 使用GMT时区
4. 打印线程ID    
5. 打印日志级别
6. 打印源文件名和行号

常见问题: 一旦程序崩溃,那么最后若干条日志往往就是丢失了。
muduo解决:

   1.定期将缓存区内的日志消息fflush到硬盘。
   
   2.每条内存中的日志消息都带有cookie,其值为某个函数的地址,通过core dump文件中查找cookie
     就能找到尚未来得及写入磁盘的消息。

性能需求

  1. 不阻塞正常的执行流程

  2. 在多线程程序中,不造成争用

多线程异步日志

muduo日志库采用双缓存技术


shiyang6017
158 声望59 粉丝

« 上一篇
github基本教程
下一篇 »
linux 杂谈

引用和评论

0 条评论