在实际项目中使用了我自己封装的Boost::log之后,发现使用体验并不好。
失败之处
- log的输出控制不方便(必须重新编译)
- 使用boost1.57之后,一旦调用了log设定函数,输出的就只剩下message了,没有时间等信息
- 关闭log输出之后,还必须创建一个ostream的对象才能保证编译通过(虽然创建对象已经封装好了)
- log的各个等级比较难记忆
改进之处
- log的输出控制通过读配置文件完成
- log设定函数不用手动调用,第一次输出log时自动调用,并且设置好了常用attributes
- 关闭log输出时,自动将log输出语句变成空语句,不影响内存占用和编译执行速度
- 直接用数字表示log等级
- 整合了Boost::Program_options,可以通过命令行参数生成log配置文件的模板
完整的代码在template目录。