1.基本介绍
- 地址: https://github.com/zsummer/log4z
- 支持 windows/linux/mac/android/iOS
- 一个头文件,一个cpp
- 日志滚动, 可以按月分文件夹
- 线程安全
- 彩色输出
- 格式化或流形式的记录
- 热更新配置
- 多日志分流,可以输出到多个位置(logger)
- MIT协议,基本没限制
2. 配置项
放到单独的配置文件中: log4z.cfg
| 1 | [Main] # logger名字,日志分流 | 
3. 接口
3.1. ILog4zManager 是个总控,基础控制接口,下边的stream基于这个接口
| 1 | getRef(); | 
3.2. Log4zStream 支持流式输入
类似 stringstream
用各种重载<<操作符,来支持各个数据类型
比如流式输出
| 1 | LOGD("char:" << 'c' | 
遇到 << 1000, 会去找
| 1 | inline Log4zStream & operator <<(int t){return writeLongLong(t);} | 
其他格式也是这样输出的。
3.3. 方便使用的宏
支持流式输出的宏
| 1 | //! fast macro | 
支持格式化的宏
| 1 | //!format string | 
4. 线程模型
一个后台线程持续往日志文件写; 各种接口线程安全。
| 1 | bool LogerManager::start() | 
ThreadHelper::start() 进而调用 int ret = pthread_create(&_phtreadID, NULL, threadProc, (void*)this); 启动 threadProc(),最后会调用void LogerManager::run():
| 1 | void LogerManager::run() | 
对线程和信号量都做了封装,以跨平台。
| 1 | // 线程封装 |