19.muduo学习笔记之base_LogFile.{h&cc}

1. 类说明

1. 功能

  • muduo的文件日志类
  • 这里用到了FileUtil和ProcessInfo

2. 继承

  1. noncopyable

2. 成员变量说明

  1. basename_
    • string类型的文件名
  2. rollSize_
    • 日志文件达到rollSize_就换一个新文件
  3. flushInterval_
    • 日志写入间隔时间
  4. checkEveryN_
    • 看count_的说明
  5. count_
    • 计数器,当它等于checkEveryN_的时候,会检测是否需要换一个新的日志文件,即是否达到滚动条件
    • 这个是append()的时候+1
  6. mutex_
    • 锁指针
  7. startOfPeriod_
    • time_t类型,开始记录日志时间
  8. lastRoll_
    • time_t类型,上一次滚动日志文件时间
  9. lastFlush_
    • time_t类型,上一次日志写入文件时间
  10. file_
    • FileUtil::AppendFile类型的指针
  11. kRollPerSeconds_
    • 一天的秒数,意思就是过1天滚动一次日志

3. 成员函数说明

1. 普通

  1. 构造函数
    • 初始化变量,断言basename中没有’/’,调用rollFile()
  2. 析构函数
    • 默认析构
  3. append(const char* logline, int len)
    • 调用append_unlocked()
  4. flush()
    • 调用file_.flush()
  5. rollFile()
    • 这里用到的"now / kRollPerSeconds_ * kRollPerSeconds_;",是为了对齐到kRollPerSeconds_的整数倍,也就是把时间调整到当天零点
    • 调用标准库unique_ptr的reset(),换一个新文件

2. 私有

  1. append_unlocked(const char* logline, int len)
    • 调用file_->append(),把数据写入到文件中,上一篇有讲
    • 有调用rollFile()的地方
  2. getLogFileName(const string& basename, time_t* now)
    • 简单来说就是生成log文件名,格式为basename+时间+主机名+进程名+.log
上一篇:10.配置总结


下一篇:Linux基础命令:rename,basename,dirname