log4cplus配置文件的使用

log4cplus的配置文件使用方法

接上次使用代码配置log4cplus,本文从配置文件的角度对log4cplus进行配置。
如想代码控制配置log4cplus,请参考:Linux下 QT中 log4cplus 最基本配置及使用

1. 创建log4cplus配置文件

在项目构建目录的根目录下(即Debug或Release目录下)创建log4.config (此文件名自定义)
在文件中添加以下配置

log4cplus.rootLogger = TRACE, TRACE_MSGS, DEBUG_MSGS, ERROR_MSGS

log4cplus.appender.TRACE_MSGS = log4cplus::RollingFileAppender
log4cplus.appender.TRACE_MSGS.File = ./log/trace.log
log4cplus.appender.TRACE_MSGS.filters.1 = log4cplus::spi::LogLevelMatchFilter
log4cplus.appender.TRACE_MSGS.filters.1.LogLevelToMatch = TRACE
log4cplus.appender.TRACE_MSGS.filters.1.AcceptOnMatch=true
log4cplus.appender.TRACE_MSGS.filters.2=log4cplus::spi::DenyAllFilter
log4cplus.appender.TRACE_MSGS.MaxFileSize = 5MB
log4cplus.appender.TRACE_MSGS.MaxBackupIndex = 10
log4cplus.appender.TRACE_MSGS.Append = true
log4cplus.appender.TRACE_MSGS.ImmediateFlush = true
log4cplus.appender.TRACE_MSGS.layout = log4cplus::PatternLayout
log4cplus.appender.TRACE_MSGS.layout.ConversionPattern = [%D{%Y-%m-%d %H:%M:%S, %Q}] [threadID:%t] %-5p - %m%n

log4cplus.appender.DEBUG_MSGS = log4cplus::RollingFileAppender
log4cplus.appender.DEBUG_MSGS.File = ./log/debug.log
log4cplus.appender.DEBUG_MSGS.filters.1 = log4cplus::spi::LogLevelMatchFilter
log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelMin=DEBUG
log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelMax=INFO
log4cplus.appender.DEBUG_MSGS.filters.1.AcceptOnMatch=true
log4cplus.appender.DEBUG_MSGS.filters.2=log4cplus::spi::DenyAllFilter
log4cplus.appender.DEBUG_MSGS.MaxFileSize = 5MB
log4cplus.appender.DEBUG_MSGS.MaxBackupIndex = 10
log4cplus.appender.DEBUG_MSGS.Append = true
log4cplus.appender.DEBUG_MSGS.ImmediateFlush = true
log4cplus.appender.DEBUG_MSGS.layout = log4cplus::PatternLayout
log4cplus.appender.DEBUG_MSGS.layout.ConversionPattern = [%D{%Y-%m-%d %H:%M:%S, %Q}] [threadID:%t] %-5p - %m%n

log4cplus.appender.ERROR_MSGS = log4cplus::RollingFileAppender
log4cplus.appender.ERROR_MSGS.File = ./log/error.log
log4cplus.appender.ERROR_MSGS.filters.1=log4cplus::spi::StringMatchFilter
log4cplus.appender.ERROR_MSGS.filters.1.StringToMatch=ERROR
log4cplus.appender.ERROR_MSGS.filters.1.AcceptOnMatch=true
log4cplus.appender.ERROR_MSGS.filters.2=log4cplus::spi::DenyAllFilter
log4cplus.appender.ERROR_MSGS.MaxFileSize = 5MB
log4cplus.appender.ERROR_MSGS.MaxBackupIndex = 10
log4cplus.appender.ERROR_MSGS.Append = true
log4cplus.appender.ERROR_MSGS.ImmediateFlush = true
log4cplus.appender.ERROR_MSGS.layout = log4cplus::PatternLayout
log4cplus.appender.ERROR_MSGS.layout.ConversionPattern = [%D{%Y-%m-%d %H:%M:%S, %Q}] [threadID:%t] %-5p - %m%n

转换标识符介绍

PatterLayout 支持的转换标识符主要包括:

(1) "%%",转义为%, 即, std::string pattern = "%%" 时输出"%"。

(2) "%c",输出 logger 名称,比如 std::string pattern ="%c" 时输出: "test_logger.subtest",
	  也可以控制 logger 名称的显示层次,比如"%c{1}"时输出"test_logger",其中数字表示层次。

(3)"%D",显示本地时间,当 std::string pattern ="%D" 时输出:"2004-10-16 18:55:45",
	 %d  显示标准时间,所以当 std::string pattern ="%d" 时输出 "2004-10-16 10:55:45" 
	 (因为北京时间位于东 8 区,差 8 个小时)。
	 可以通过%d{...}定义更详细的显示格式,比如%d{%H:%M:%s}表示要显示小时:分钟:秒。

大括号中可显示的预定义标识符如下:
%a -- 表示礼拜几,英文缩写形式,比如"Fri"
%A -- 表示礼拜几,比如"Friday"
%b -- 表示几月份,英文缩写形式,比如"Oct"
%B -- 表示几月份, "October"
%c -- 标准的日期+时间格式,如 "Sat Oct 16 18:56:19 2004"
%d -- 表示今天是这个月的几号(1-31)"16"
%H -- 表示当前时刻是几时(0-23),如 "18"
%I -- 表示当前时刻是几时(1-12),如 "6"
%j -- 表示今天是哪一天(1-366),如 "290"
%m -- 表示本月是哪一月(1-12),如 "10"
%M -- 表示当前时刻是哪一分钟(0-59),如 "59"
%p -- 表示现在是上午还是下午, AM or PM
%q -- 表示当前时刻中毫秒部分(0-999),如 "237"
%Q -- 表示当前时刻中带小数的毫秒部分(0-999.999),如 "430.732"
%S -- 表示当前时刻的多少秒(0-59),如 "32"
%U -- 表示本周是今年的第几个礼拜,以周日为第一天开始计算(0-53),如 "41"
%w -- 表示礼拜几, (0-6, 礼拜天为 0),如 "6"
%W -- 表示本周是今年的第几个礼拜,以周一为第一天开始计算(0-53),如 "41"
%x -- 标准的日期格式,如 "10/16/04"
%X -- 标准的时间格式,如 "19:02:34"
%y -- 两位数的年份(0-99),如 "04"
%Y -- 四位数的年份,如 "2004"
%Z -- 时区名,比如 "GMT"

(4) "%F",输出当前记录器所在的文件名称,比如 std::string pattern ="%F" 时输出:"main.cpp"。

(5) "%L",输出当前记录器所在的文件行号,比如 std::string pattern ="%L" 时输出: "51"

(6) "%l",输出当前记录器所在的文件名称和行号,比如 std::string pattern ="%L" 时输出"main.cpp:51"。

(7) "%m",输出原始信息,比如 std::string pattern ="%m" 时输出: "teststr",即上述代
码中 LOG4CPLUS_DEBUG 的第二个参数,这种实现机制可以确保原始信息被嵌入到带
格式的信息中。

(8) "%n",换行符,没什么好解释的。

(9) "%p",输出 LogLevel,比如 std::string pattern ="%p" 时输出: "DEBUG"。

( 10) "%t",输出记录器所在的线程 ID,比如 std::string pattern ="%t" 时输出:"1075298944"。

(11) "%x",嵌套诊断上下文 NDC (nested diagnostic context) 输出,从堆栈中弹出上下
文信息, NDC 可以用对不同源的 log 信息(同时地)交叉输出进行区分,关于 NDC 方
面的详细介绍会在下文中提到。

(12)格式对齐,比如 std::string pattern ="%-10m"时表示左对齐,宽度是 10,此时会输
出"teststr ",当然其它的控制字符也可以相同的方式来使用,比如"%-12d", "%-5p"

注意由于我将log文件存储到log文件夹中,所以在程序运行前需要手动新建一个log文件夹(如果需要可代码进行文件夹检查判断,自行解决)

2. log4cplus的使用

配置文件完成后,使用方法参考如下:

#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
#include <log4cplus/helpers/loglog.h>
#include <log4cplus/helpers/stringhelper.h>
#include <log4cplus/loggingmacros.h>

using namespace log4cplus;
using namespace log4cplus::helpers;

int main(void)
{
    PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log4.config"));
    Logger logger = Logger::getRoot();
	// trace
    LOG4CPLUS_TRACE(logger, "This is " << " trace...");
    // debug
    LOG4CPLUS_DEBUG(logger, "This is " << " debug...");
    // info
    LOG4CPLUS_INFO(logger,"This is " << " info...");
    // warn
    LOG4CPLUS_WARN(logger, "This is " << " warn...");
    // error
    LOG4CPLUS_ERROR(logger, "This is " << " error...");
    //fatal
    LOG4CPLUS_FATAL(logger, "This is " << " fatal...");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值