muduo异步日志库

文章目录

  • 一、日志库模型
    • 1.前端
  • 参考

一、日志库模型

组成部分

  • muduo日志库由前端和后端组成。
    muduo异步日志库_第1张图片

muduo日志库是异步高性能日志库,其性能开销大约是前端每写一条日志消息耗时1.0us~1.6us。

采用双缓冲区(double buffering)交互技术。基本思想是准备2部分buffer:A和B,前端(front end)线程往buffer A填入数据(日志消息),后端(back end)线程负责将buffer B写入日志文件。当A写满时,交换A和B。如此往复。

实现时,在后端设置一个已满缓冲队列(Buffer1~n,2<=n<=16),用于缓存一个周期内临时要写的日志消息。

这样做到好处在于:

  • 1)线程安全;
  • 2)非阻塞。

这样,2个buffer在前端写日志时,不必等待磁盘文件操作,也避免每写一条日志消息都触发后端线程。

异常处理:

  • 当一个周期内,产生过多Buffer入队列,当超过队列元素上限数量值25时,直接丢弃多余部分,并记录。

1.前端

前端主要包括:Logger, LogStream,FixedBuffer,SourceFile。

参考

  • muduo笔记 日志库(一)
  • muduo笔记 日志库(二)

你可能感兴趣的:(开源代码学习,c++)