log4cplus--通过配置文件输出日志文件

log4cplus配置文件示例

日志等级

log4cplus 提供的日志等级如下:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

举例来说:

如果定义了日志等级为 ERROR,那么只有标记为 ERROR, FATAL的日志信息才会被记录
如果等级为 DEBUG,则所有标记为 DEBUG/INFO/WARN/ERROR/FATAL 的日志才会被记录
ALL和OFF级别用来将所有其他类型的级别分别切换为打开或关闭的标志,不会用于设置日志级别

关于配置文件,说明几点:

日志输出到 appenders,appenders 可以是文件或者控制台,可以把输出当作cpp流的概念
一个日志类别可以关联到多个 appenders
所有的日志类别都是从抽象 root 类继承日志级别和 appender,除非另行定义
支持记录工作线程的id,用来分析线程行为

配置文件示例

来源网上,测试可用,在可执行模块当前目录会新建log文件夹,日志保存以debug.日期.log格式

#配置文件(其它日志级别配置相同):
log4cplus.rootLogger=TRACE,ERROR_MSGS, DEBUG_MSGS, INFO_MSGS
log4cplus.logger.console=TRACE,logConsole


#不向默认对象(rootLogger)输出,因此信息只能输出到文件
log4cplus.additivity.file=false

###############################CONSOLE##########################################
log4cplus.appender.logConsole=log4cplus::ConsoleAppender
log4cplus.appender.logConsole.Encoding=utf-8
log4cplus.appender.logConsole.layout=log4cplus::PatternLayout
log4cplus.appender.logConsole.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n


################################DEBUG####################################
#设置日志追加到文件尾
log4cplus.appender.DEBUG_MSGS=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.DEBUG_MSGS.FilenamePattern=./log/debug.%d{yyyyMMdd}.log
log4cplus.appender.ERROR_MSGS.Schedule=DAILY
log4cplus.appender.ERROR_MSGS.MaxHistory=365

log4cplus.appender.DEBUG_MSGS.Append=true
log4cplus.appender.DEBUG_MSGS.RollOnClose=false
log4cplus.appender.DEBUG_MSGS.CreateDirs=true

#设置日志文件大小
log4cplus.appender.DEBUG_MSGS.MaxFileSize=10MB

#设置生成日志最大个数
log4cplus.appender.DEBUG_MSGS.MaxBackupIndex=5

log4cplus.appender.DEBUG_MSGS.Encoding=utf-8

log4cplus.appender.DEBUG_MSGS.layout=log4cplus::PatternLayout

#设置日志打印格式
log4cplus.appender.DEBUG_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n

#匹配相同日志级别,只有wx_uservedio日志才输入到该文件中
log4cplus.appender.DEBUG_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelToMatch=DEBUG
log4cplus.appender.DEBUG_MSGS.filters.1.AcceptOnMatch=true
log4cplus.appender.DEBUG_MSGS.filters.2=log4cplus::spi::DenyAllFilter

################################ERROR####################################

#设置日志追加到文件尾
log4cplus.appender.ERROR_MSGS=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.ERROR_MSGS.FilenamePattern=./log/error.%d{yyyyMMdd}.log
log4cplus.appender.ERROR_MSGS.Schedule=DAILY
log4cplus.appender.ERROR_MSGS.MaxHistory=365

log4cplus.appender.ERROR_MSGS.Append=true
log4cplus.appender.ERROR_MSGS.RollOnClose=false
log4cplus.appender.ERROR_MSGS.CreateDirs=true

#设置日志文件大小
log4cplus.appender.ERROR_MSGS.MaxFileSize=10MB

#设置生成日志最大个数
log4cplus.appender.ERROR_MSGS.MaxBackupIndex=5

log4cplus.appender.ERROR_MSGS.Encoding=utf-8

log4cplus.appender.ERROR_MSGS.layout=log4cplus::PatternLayout

#设置日志打印格式
log4cplus.appender.ERROR_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m%n

#匹配相同日志级别,只有wx_uservedio日志才输入到该文件中
log4cplus.appender.ERROR_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
log4cplus.appender.ERROR_MSGS.filters.1.LogLevelToMatch=ERROR
log4cplus.appender.ERROR_MSGS.filters.1.AcceptOnMatch=true
log4cplus.appender.ERROR_MSGS.filters.2=log4cplus::spi::DenyAllFilter

################################INFO####################################

#设置日志追加到文件尾
log4cplus.appender.INFO_MSGS=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.INFO_MSGS.FilenamePattern=./log/info.%d{yyyyMMdd}.log
log4cplus.appender.INFO_MSGS.Schedule=DAILY
log4cplus.appender.INFO_MSGS.MaxHistory=365

log4cplus.appender.INFO_MSGS.Append=true
log4cplus.appender.INFO_MSGS.RollOnClose=false
log4cplus.appender.INFO_MSGS.CreateDirs=true

#设置日志文件大小
log4cplus.appender.INFO_MSGS.MaxFileSize=10MB

#设置生成日志最大个数
log4cplus.appender.INFO_MSGS.MaxBackupIndex=5

log4cplus.appender.INFO_MSGS.Encoding=utf-8

log4cplus.appender.INFO_MSGS.layout=log4cplus::PatternLayout

#设置日志打印格式
log4cplus.appender.INFO_MSGS.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %-5p %m %n	

#匹配相同日志级别,只有INFO日志才输入到该文件中
log4cplus.appender.INFO_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter
log4cplus.appender.INFO_MSGS.filters.1.LogLevelToMatch=INFO
log4cplus.appender.INFO_MSGS.filters.1.AcceptOnMatch=true
log4cplus.appender.INFO_MSGS.filters.2=log4cplus::spi::DenyAllFilter

测试程序

main.cpp

#include <log4cplus/logger.h>
#include "log4cplus/consoleappender.h"
#include <log4cplus/loggingmacros.h>
#include <log4cplus/configurator.h>
#include <log4cplus/initializer.h>

int main()
{
    // Initialization and deinitialization.
    //log4cplus::Initializer initializer;
    log4cplus::PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log.properties"));

    log4cplus::Logger logger = log4cplus::Logger::getRoot();

    LOG4CPLUS_INFO(logger, LOG4CPLUS_TEXT("Hello, World!"));
    LOG4CPLUS_INFO(logger, LOG4CPLUS_TEXT("test, World!"));

    log4cplus::Logger loggerConsole = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("console"));
    
    LOG4CPLUS_INFO(loggerConsole, LOG4CPLUS_TEXT("console output..."));

    return 0;
}

cmake

编写CMakeList.txt文件

cmake_minimum_required(VERSION 3.20)

project(testlog)

set(CMAKE_MODULE_PATH /usr/share/cmake-3.10/Modules)
set(CMAKE_CXX_STANDARD 17)
set(INCLUDE_DIR "/usr/local/include")
set(LINK_DIR "/usr/local/lib")

include_directories(${INCLUDE_DIR})

add_executable(testlog main.cpp)

target_link_libraries(testlog -llog4cplus)

执行

以下命令:

mkdir build
cd build
cmake ../
make
./testlog
#查看运行结果,结果保存在log文件夹,同时控制台有输出
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

feng_blog6688

只需一个赞,谢谢你的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值