log4cplus c++ 日志库
log4cplus-2.0.7.zip
visual studio 2015
win7 64 位
log4j 用于Java,log4cplus从它衍生而来,用于c++。
用于c++的日志库还有很多,如 log4cxx等,可以根据实际需求选择使用。
log4cplus 的地址:https://github.com/log4cplus/log4cplus。
log4cplus是一种易于使用的C ++日志记录API,可提供线程安全,灵活且任意粒度的日志管理和配置控制。
例程
log4cplus 控制台 调用例程
https://download.csdn.net/download/wowocpp/72546107
参考
MFC log4cplus日志库的简单例子
https://liang.blog.csdn.net/article/details/120791423
项目主页:
https://sourceforge.net/p/log4cplus/wiki/Home/
https://github.com/wilx/log4cplus
https://sourceforge.net/p/log4cplus/wiki/CodeExamples/
https://blog.csdn.net/zzhongcy/article/details/42234719
https://my.oschina.net/lovecxx/blog/185951
log4cplus 使用方法 配置
https://my.oschina.net/lovecxx/blog/185951
1
log4cplus-2.0.7.zip
https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/
log4cplus-2.0.7\msvc14
目录下面
右键 设为启动项目
项目—> 重新生成
log4cplus-2.0.7\msvc14\Win32\bin.Debug_Unicode\
静态库
控制台 测试 工程
visual studio 2017 建立一个 控制台程序
把当前工程路径 放入 搜索include路径中,
这样 代码中 可以使用 include <> 尖括号的方式,
否则只能使用include " "的方式。
测试代码
#include "pch.h"
#include <iostream>
#include <log4cplus/helpers/loglog.h>
#include <log4cplus/logger.h>
#include <log4cplus/initializer.h>
#pragma comment(lib,"log4cplusSUD.lib")
using namespace std;
using namespace log4cplus::helpers;
void printMsgs() {
cout << "Entering printMsgs()..." << endl;
LogLog::getLogLog()->debug(LOG4CPLUS_TEXT("This is a Debug statement..."));
LogLog::getLogLog()->debug(
log4cplus::tstring(LOG4CPLUS_TEXT("This is a Debug statement...")));
LogLog::getLogLog()->warn(LOG4CPLUS_TEXT("This is a Warning..."));
LogLog::getLogLog()->warn(
log4cplus::tstring(LOG4CPLUS_TEXT("This is a Warning...")));
LogLog::getLogLog()->error(LOG4CPLUS_TEXT("This is a Error..."));
LogLog::getLogLog()->error(
log4cplus::tstring(LOG4CPLUS_TEXT("This is a Error...")));
cout << "Exiting printMsgs()..." << endl << endl;
}
int main()
{
log4cplus::Initializer initializer;
printMsgs();
cout << "Turning on debug..." << endl;
LogLog::getLogLog()->setInternalDebugging(true);
printMsgs();
cout << "Turning on quiet mode..." << endl;
LogLog::getLogLog()->setQuietMode(true);
printMsgs();
getchar();
return 0;
}
运行结果
1
前言
之前接触的java项目中,日志操作基本上都是用的log4j,以前的c项目中也用过zlog。但是最近参与C++的一个项目,自己网上做了一些选型,所以自己记录一下。
选型比较:
log4cxx:Apache的产品,属于apache的子项目之一,由log4j移植过来的。移植过来的东西多数都有一个特点,那就是要依赖各种碗糕。log4cxx就需要依赖apr-utils,编译起来没那么直接,因此我放弃了它。
log4cpp:感觉上log4cpp和log4cplus大同小异,支持的功能也类似。上上一次更新是在2007年,不过在时隔五年之后的去年年底(2012年),它突然又更新了, 从1.0版提升到了1.1版,有点不容易,感觉诈尸了。另外,它也是由log4j移植过来的。
log4cplus:log4cplus究竟和log4cpp区别在哪,如果一定要作对比似乎log4cplus比log4cpp复杂了那么一点点。log4cplus的功能比log4cpp支持的功能更加全面,支持线程安全(log4cpp的代码里也做了一些对线程安全的保证,但官方没有介绍它支持线程安全,但是我自己在centos 6.2上面编译log4cpp后发现其不支持多线程,详情:http://sourceforge.net/p/log4cpp/feature-requests/34/。反而log4cplus宣称自己是线程安全的),另外log4plus更新非常频繁,对于一个有版本洁癖的人来说,这也是我选择它的原因,新版本提供了vc10的解决方案,还支持可选编译Unicode和非Unicode版本。
glog:这个就不介绍了,全称Google Glog, Google的东西一直比较让人放心。它比log4系列的库都要简单,不过它不支持用配置文件控制日志行为,这对我来说是个遗憾。
zlog: 使用C编写,支持window和linux,但是Linux下有些问题,所以放弃了。
log4系列的库前身都是log4j,log4j真是深藏功与名。以下通过log4plus来介绍一下它的基本用法和魅力。