下面是详细讲解“C++第三方日志库log4cplus的安装与使用配置教程”的完整攻略:
1. log4cplus简介
log4cplus是基于log4j的C++语言的日志库,支持多线程,支持log4j配置文件解析,支持打印输出到控制台、文件和socket等多种方式。
2. log4cplus安装
log4cplus的安装分为两步,首先是安装log4cplus所需要的依赖库,其次就是编译安装log4cplus本身。
2.1 安装依赖库
log4cplus的依赖库有两个,一个是Boost库,另一个是PTHREAD库。安装方法如下:
```
sudo apt-get install libboost-all-dev # 安装Boost库
sudo apt-get install libpthread-stubs0-dev # 安装PTHREAD库
```
2.2 下载和安装log4cplus
下载log4cplus的最新版本,解压后进入到解压后的目录,依次执行以下命令安装:
```
./configure
make
sudo make install
```
安装完成后,在系统的/usr/local/lib/目录下会生成liblog4cplus.a和liblog4cplus.so.5等文件。
3. log4cplus配置
log4cplus的配置文件默认为log4cplus.properties,一般文件存放在应用程序的根目录下,配置项丰富,包括输出目标,日志等级,日志格式等。下面以两个实例为例进行讲解:
3.1 控制台输出
log4cplus.rootLogger=DEBUG, stdout
log4cplus.appender.stdout=log4cplus::ConsoleAppender
log4cplus.appender.stdout.layout=log4cplus::PatternLayout
log4cplus.appender.stdout.layout.ConversionPattern=[%D %T] [%p] %c{2} - %m%n
上述配置表示将控制台作为输出目标,日志等级为DEBUG,%D %T表示输出日期和时间,%p表示输出日志等级,%c{2}表示输出当前类名(包括两级),%m表示输出消息内容,%n表示换行。
3.2 文件输出
log4cplus.rootLogger=DEBUG, FILE
log4cplus.appender.FILE=log4cplus::RollingFileAppender
log4cplus.appender.FILE.File=/var/log/hello.log
log4cplus.appender.FILE.layout=log4cplus:: PatternLayout
log4cplus.appender.FILE.layout.ConversionPattern=[%D %T] [%p] %c{2} - %m%n
log4cplus.appender.FILE.MaxFileSize=10MB
log4cplus.appender.FILE.MaxBackupIndex=5
上述配置表示将日志输出到/var/log/hello.log文件,MaxFileSize表示文件最大大小为10MB,MaxBackupIndex表示保留日志文件个数为5,超过5个就会删除旧的日志文件。
4. log4cplus使用
使用log4cplus非常简单,只需要在应用程序中引入log4cplus头文件,然后通过log4cplus::Logger类的静态方法,就可以在程序中记录日志了。下面是两个示例:
4.1 控制台输出
```c++
#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
#include <log4cplus/loggingmacros.h>
using namespace log4cplus;
int main() {
PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log4cplus.properties"));
Logger logger = Logger::getRoot();
LOG4CPLUS_DEBUG(logger, "Hello log4cplus!");
LOG4CPLUS_INFO(logger, "Hello log4cplus!");
LOG4CPLUS_WARN(logger, "Hello log4cplus!");
return 0;
}
```
以上程序表示将log4cplus.properties配置文件加载进来,并使用Logger::getRoot()获取根记录器对象,然后通过LOG4CPLUS_DEBUG,LOG4CPLUS_INFO和LOG4CPLUS_WARN等宏函数打印不同级别的日志信息。
4.2 文件输出
```c++
#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
#include <log4cplus/loggingmacros.h>
using namespace log4cplus;
int main() {
// 将配置文件加载进来
PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log4cplus.properties"));
// 获取Logger对象
Logger logger = Logger::getInstance(LOG4CPLUS_TEXT("Main"));
int i = 0;
// 一直循环输出日志
while (true) {
LOG4CPLUS_DEBUG(logger, "count=" << i);
LOG4CPLUS_INFO(logger, "count=" << i);
LOG4CPLUS_WARN(logger, "count=" << i);
i++;
sleep(1);
}
return 0;
}
```
以上程序表示将log4cplus.properties配置文件加载进来,并使用Logger::getInstance()获取指定名称的Logger对象,然后通过LOG4CPLUS_DEBUG,LOG4CPLUS_INFO和LOG4CPLUS_WARN等宏函数打印不同级别的日志信息。循环输出日志的过程,将会不断地向/var/log/hello.log文件中写入日志。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++第三方日志库log4cplus的安装与使用配置教程 - Python技术站