【log4】c++日志工具之——log4cpp

本文介绍了Log4cpp开源C++类库的功能与原理,重点讲解了log4cplus的安装、使用、配置、在项目中的运用及交叉编译方法。还提及日志使用注意事项,以及将日志发送到远程服务器的配置,为C++程序的日志和跟踪调试提供了全面指导。

1、log4cpp概述

      Log4cpp是一个开源的C++类库,它提供了C++程序中使用日志和跟踪调试的功能,它的优点如下:

    • 提供应用程序运行上下文,方便跟踪调试;
    • 可扩展的、多种方式记录日志,包括命令行、文件、回卷文件、内存、syslog服务器、Win事件日志等;
    • 可以动态控制日志记录级别,在效率和功能中进行调整;
    • 所有配置可以通过配置文件进行动态调整;
    • 多语言支持,包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(log4p)等;

类似日志工具:glog、boost.log、spdlog

2、原理

      Log4cpp有三个主要的组件:日志类别(Category)、输出源(Appender)和布局(Layout)。这三种类型的组件一起工作使得系统可以根据信息的类型和级别记录它们,并且在运行时控制这些信息的输出格式和位置。

三个组件的介绍:

1)日志类别(Category)含义是:如果配置文件中设置的级别是DEBUG,则任意的log都能打印出来;但如果配置的级别是ERROR,则只有高于ERROR优先级的日志才可以打印出来。

日志的常用优先级:DEBUG < INFO < WARN < ERROR < FATAL

2)输出源(Appender)用来输出日志(被layout格式化后)到一些设备上,比如文件、命令行、内存等。也可以定义自己的appender输出日志信息到别的设备上。log4cpp提供的appender如下: FileAppender  输出到文件 RollingFileAppender 输出到回卷文件,即当文件到达某个大小后回卷 ConsoleAppender 输出到控制台

3)布局(Layout):显示样式PatternLayout表示让用户根据类似于C语言printf函数的转换模式来指定输出格式

三个组件之间的关系:

  • Category和Appender的关系是:多个Appender可以附加到一个Category上,这样一个日志消息可以同时输出到多个设备上。
  • Appender和Layout的关系是:Layout附加在Appender上,appender调用layout处理完日志消息后,记录到某个设备上。

3 log4cplus的安装

log4cplus是开源的,源代码可在这里找到。下载源代码压缩包后解压,进入主目录。和大多数autotools工程一样,顺序执行以下命令即可完成安装。

./configure
make
make install

安装文件将默认安装到/usr/local,库文件置于/usr/local/lib,头文件置于/usr/local/include。

是的,这里介绍的安装及下面介绍的应用都是基于linux系统。

4 log4cplus的使用

以下是官方提供的“hello, world”的示例程序:

#include <log4cplus/logger.h>
#include <log4cplus/loggingmacros.h>
#include <log4cplus/configurator.h>
#include <iomanip>
 
using namespace log4cplus;
 
int main()
{
    BasicConfigurator config;
    config.configure();
    
    Logger logger = Logger::getInstance(LOG4CPLUS_TEXT("main"));
    LOG4CPLUS_WARN(logger, LOG4CPLUS_TEXT("Hello, World!"));
    return 0;
}

程序包含了一些必要的头文件,编译时需要链接log4cplus库,将这段代码保存为 test.cpp,执行以下命令编译:

g++ test.cpp -o test -llog4cplus

编译后生成 test 可执行文件,运行./test,得到如下输出:

WARN - Hello, World!

这个程序使用的是log4cplus内置的默认配置选项,实际使用中一般要自己配置选项,接下来你会看到。

5 log4cplus配置

log4cplus配置就是定义appender, 定义输出的格式即 layout。以下列出两种常用配置,以供参考。

配置输出到控制台(通常用于前台程序):

log4cplus.logger.logmain = TRACE, console
log4cplus.appender.console = log4cplus::ConsoleAppender
log4cplus.appender.console.layout = log4cplus::PatternLayout
log4cplus.appender.console.layout.ConversionPattern = [%D{%m/%d/%y %H:%M:%S,%q} %-5p] - %m%n

配置输出到文件(通常用于后台程序):

log4cplus.logger.logmain = INFO, file
log4cplus.appender.file = log4cplus::FileAppender
log4cplus.appender.file.File = /var/log/myapp.log
log4cplus.appender.file.MaxFileSize = 10M
log4cplus.appender.file.Append = true
log4cplus.appender.file.layout = log4cplus::PatternLayout
log4cplus.appender.file.layout.ConversionPattern = [%D{%m/%d/%y %H:%M:%S,%q} %-5p] - %m%n

简单说明一下,配置文件中log4cplus.logger.logmain即定义一个logmain对象,后面跟的两个字段前一个表示log级别,后一个指定使用的appender,即日志输出对象。log级别按严重程度从低到高依次为TRACE、DEBUG、INFO、WARN、ERROR、FATAL。log4cplus.appender.xxx定义具体的appender属性,如是控制台还是文件,进一步配置文件名、文件大小等。

将配置保存到一个配置文件中(如log4cplus.conf),以下你将看到如何使用配置文件。有关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值