迷你日志类Minilog
简介
日志,在一般系统里是非常非常重要的,它不仅跟踪到程序的执行,同时也是对系统进行各方面分析的基础。其重要性在这里不再一一说明,有兴趣可自行GOOGLE之。
日志的实现可以很复杂,功能强大的如java的log4j和移值到C++的log4cpp。当然也可以很简单,就是简单的向控制台打印和写文件。Minilog就是属于这种简单的类型。
特点:
-
跨平台,当然我只测试Linux和WINDOWS,买不起苹果。
-
提供非常丰富的宏,使用非常方便。
-
没测试过性能,不过估计不会很差。
下载:minilog.zip
minilog.zip文件列表:
文件 | 说明 |
---|---|
minilog.h | 日志类的头文件 |
minilog.cpp | 日志类的实现文件 |
test.h | 测试框架,可参阅之前写的Very Very Simple C++ Testing Framework |
minilogtest.cpp | 测试文件 |
test.cpp | 测试启动函数,即main函数所在文件 |
实现和使用
Minilog的实现只有一个类,为一单件。为了避免频繁的IO交互,日志先进行缓存,当缓存满或者刷日志时,才进行IO操作。日志级别分别为:ALL, DEBUG, INFO, WARNING, ERROR, FATAL, OFF。ALL级别最低,OFF级别最高。终端日志的输出不缓存,不同的级别输出来同的颜色。
便捷的操作宏。
宏 | 说明 |
---|---|
LOG_DEBUG | 输出调试日志,DEBUG级别 |
LOG_INFO | 输出消息日志,INFO级别 |
LOG_WARN | 输出警告日志,WARNING级别 |
LOG_ERROR | 输出错误日志,ERROR级别 |
LOG_FATAL | 输出致命日志,FATAL级别 |
SET_LOG_FILE_LEVEL | 设置文件日志级别 |
SET_LOG_CONSOLE_LEVEL | 设置终端日志级别 |
SET_LOG_LEVEL | 设置终端和文件日志级别 |
SET_LOG_PATH | 设置日志的路径 |
SET_LOG_FILE_FIXED | 设置日志的文件名,不加任何修饰 |
SET_LOG_FILE | 设置日志的文件名,加时间和进程号修饰 |
SET_LOG_BUF_SIZE | 设置日志缓冲大小 |
LOG_FLUSH | 刷日志 |
LOG_RELEASE | 释放日志,事实任何事情都不做 |
LOG_IS_READY | 测试日志是否准备 |
原先的单件实现是动态分配内存的,于是有LOG_RELEASE这是写法,但是事实上,当程序退出后,如果没有显式释放,是不会刷日志的,于是采用下面这种方法实现:
|
|
|
|
|
|
|
|
|
|
示例
|
|
运行结果:
其它
如果可能,所有的文件都不提供VC解决方案,如果用VC。当然你先要设置你的VC环境(运行VC安装目录下vcvarsall.bat这个文件即可),命令行编译方法:
|
|
当然,你用其它编译器的话,你伪装一下VC,因为VC会定义_MSC_VER这个宏,其实编译器没有,这个宏是判定是否在WINDOWS的标准,当然实际是不合理的,如果需要,请自行修改,比如用mingw g++:
|
|