1. 类说明
1. 功能
- muduo的文件日志类
- 这里用到了FileUtil和ProcessInfo
2. 继承
- noncopyable
2. 成员变量说明
- basename_
- string类型的文件名
- rollSize_
- 日志文件达到rollSize_就换一个新文件
- flushInterval_
- 日志写入间隔时间
- checkEveryN_
- 看count_的说明
- count_
- 计数器,当它等于checkEveryN_的时候,会检测是否需要换一个新的日志文件,即是否达到滚动条件
- 这个是append()的时候+1
- mutex_
- 锁指针
- startOfPeriod_
- time_t类型,开始记录日志时间
- lastRoll_
- time_t类型,上一次滚动日志文件时间
- lastFlush_
- time_t类型,上一次日志写入文件时间
- file_
- FileUtil::AppendFile类型的指针
- kRollPerSeconds_
- 一天的秒数,意思就是过1天滚动一次日志
3. 成员函数说明
1. 普通
- 构造函数
- 初始化变量,断言basename中没有’/’,调用rollFile()
- 析构函数
- 默认析构
- append(const char* logline, int len)
- 调用append_unlocked()
- flush()
- 调用file_.flush()
- rollFile()
- 这里用到的"now / kRollPerSeconds_ * kRollPerSeconds_;",是为了对齐到kRollPerSeconds_的整数倍,也就是把时间调整到当天零点
- 调用标准库unique_ptr的reset(),换一个新文件
2. 私有
- append_unlocked(const char* logline, int len)
- 调用file_->append(),把数据写入到文件中,上一篇有讲
- 有调用rollFile()的地方
- getLogFileName(const string& basename, time_t* now)
- 简单来说就是生成log文件名,格式为basename+时间+主机名+进程名+.log