log4..简介
log4..是基于log4j的一系列的c++移植版本,使用了log4j的模式结构,目前主要有以下几个版本:
1. log4cxx, 目前是到0.10.0版,Apache下的孵化项目,不能独立编译,依赖于APR,编译比较麻烦,2008年以后就没再更新
2. log4cplus,目前最新版本是1.2.0,最近一次更新2016-01-16,不依赖于第三方库,下载位置https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/1.2.0/
3. log4cpp,目前最新版本1.1.2,最近一次更新2016年-08-02,也不依赖与第三方库,与log4cplus功能类似,但是简化了一些实现,增加了一些功能,下载位置https://sourceforge.net/projects/log4cpp/files/?source=navbar
因为基本结构大致类似,性能上相比也没有明显差别,下面就选择log4cpp进行介绍
log4cpp基本结构
log4cpp从大的结构上分为日志类别(Category),日志追加器(Appender),日志布局(Layout),日志级别(Priority)。除此以外还提供了一些帮助类,简化我们对日志的代码设置。
- Category,日志输出主体类,提供了输出各种日志级别的方法,并且能够设置类别优先级,低于此优先级的类都不再输出,可以有多个分类,但每个应用程序都有一个root分类,其他分类都是root分类的子分类,有点类似于java的单继承结构,子分类的输出同时会输出到父分类中。
// 根分类root
log4cpp::Category& root = log4cpp::Category::getRoot();
// 子分类subCat1
log4cpp::Category& sub1 = log4cpp::Category::getInstance("sub1");
root.error("test root error");
root.warn("test root error");
root.