MFC log4cplus日志库的简单例子

                            MFC log4cplus日志库的简单例子

一、简述

     记--log4cplus日志库的简单使用例子,使用log4cplusX.dll和log4cplusX.lib

     例子打包:外链:https://wwa.lanzoui.com/b0c9rfula 密码:7ak9

     各种版本的dll和lib:https://wwa.lanzoui.com/b0c9rfuze 密码:ed31

二、获取源码

源码下载 https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/

例子中下载的版本是2.0.2,请自行根据需要选择,请留意自己安装的Visual Studio版本、编译器版本,(例子中使用的是Visual Studio 2015 专业版),最新版本的可能使用了新的C++语法实现,而旧的编译器版本是不支持的。

注: 如果该源码版本下载下来不能直接编译,可能换一个源码版本就可以了。

三、编译log4cplusX.dll和log4cplusX.lib

3.1 解压并打开工程

对着log4cplus项目右键--》点击重新生成即可 log4cplusU.dll、log4cplusU.lib

 注:例子中选择的是Release_Unicode,所以得到的是log4cplusU.dll、log4cplusU.lib

四、将 log4cplusU.dll、log4cplusU.lib和include头文件添加到测试工程

4.1 将log4cplusU.dll、log4cplusU.lib库拷贝到工程路径下,例子中新建一个libs目录存放

4.2 添加dll引用

对着项目右键--》属性--》链接器--》常规--》附加库目录--》步骤4.1创建存放dll的路径。

注:记得点确定 

 4.3 将inlcude相关头文件拷贝到工程目录下

4.4 添加头文件路径

 五、测试代码

 在初始化的时候添加测试代码(例子中是添加在CMFCALog4cplusTestDlg::OnInitDialog())

#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
#include <log4cplus/loggingmacros.h>

log4cplus::initialize();
log4cplus::PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log4cplus.config"));//日志配置文件log4cplus.config
log4cplus::Logger mylogger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("MainApp"));//MainApp对应配置文件log4cplus.config中的logger

//测试不同的打印等级
LOG4CPLUS_DEBUG_FMT(mylogger, LOG4CPLUS_TEXT("debugmsg:%d\n"), __LINE__);
LOG4CPLUS_INFO_FMT(mylogger, LOG4CPLUS_TEXT("infomsg:%d\n"), __LINE__);
LOG4CPLUS_WARN_FMT(mylogger, LOG4CPLUS_TEXT("warnmsg:%d\n"), __LINE__);
LOG4CPLUS_ERROR_FMT(mylogger, LOG4CPLUS_TEXT("errormsg:%d\n"), __LINE__);
LOG4CPLUS_FATAL_FMT(mylogger, LOG4CPLUS_TEXT("fatalmsg:%d\n"), __LINE__);

配置文件:

#MainApp
log4cplus.logger.MainApp=WARN,MyFileAppender

#MyFileAppender
log4cplus.appender.MyFileAppender=log4cplus::RollingFileAppender
log4cplus.appender.MyFileAppender.File=app.log
log4cplus.appender.MyFileAppender.MaxFileSize=2MB
log4cplus.appender.MyFileAppender.MaxBackupIndex=2
log4cplus.appender.MyFileAppender.layout=log4cplus::PatternLayout
log4cplus.appender.MyFileAppender.layout.ConversionPattern=[%-5p][%D{%Y/%m/%d %H:%M:%S:%q}][%-l][%t] %m%n

 六、编译并测试

6.1 编译

因为例子中使用的release版本的dll库,所以测试代码需要生成release 版本

6.2 将log4cplusU.dll、log4cplusU.lib和log4cplus.config文件放在生成的可执行文件同级目录下,即可运行程序

日志记录效果:

 

附1:转换标识符

转换标识符
   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"等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值