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 | // 线程封装 |