如何优雅的在Visual Studio中配置log4cplus
来源:互联网 发布:patagonia c4 淘宝哪家 编辑:程序博客网 时间:2024/05/22 09:02
背景
最近在准备一个开源机器人足球项目,底层平台准备用C++实现。正发愁不知道如何进行日志记录,同学给我推荐了log4cplus。但实际使用时发现按照网上的教程根本配置不了,于是还是自己折腾得了。╮(╯_╰)╭
原因
网上的资料大都比较古老,而且你抄我,我抄你,导致教程中有错误都不自知。下面的内容比较细,老手们直接看这儿就好:
在项目中添加log4cplus包含目录,并添加库文件到项目中并根据生成版本设置生成排除。
解决方案
本次折腾用到的环境
- Windows 10 15063.413 64位专业版
- log4cplus最新稳定版版
我使用的是1.2.1-rc11 - Visual Studio 2017 Community
其他的vs版本没有测试,2010以上的应该都可以。
准备好就可以开始了~
编译log4cplus
先将log4cplus解压出来,比如D盘
进入
D:\log4cplus-1.2.1-rc1\msvc10
目录下,可以看到有很多文件,打开log4cplus.sln
。出现了安全提示,是关于测试样例的,所以不导入也没啥问题。不过因为我信(you)任(lan)他(ai),就全部允许。
提示要升级项目文件,这里直接确定允许就好。
升级完成,下面的状态栏提示全部成功,但坑爹的事儿就来了。
先编译试一下,选择
Release_Unicode
,接着 生成->生成解决方案。完美提示出错,编译器告诉我们SDK版本不对。
随便选择个项目,右键属性。啥,怎么没有升级SDK?
接下来就是痛苦的工作,在属性页上选择配置->所有配置,然后将Windows SDK 版本设为10.0.15063.0
注意,可能每个人的电脑情况都不一样,不是每个人都会出现SDK版本不对的错误,所以需要随机应变~
挨个改吧,每一个都不能落下。╮(╯_╰)╭
全部改完之后,在编译试下呗
好像没啥问题了,很正常嘛~
等啊等啊,啊嘞,又失败了!
提示找不到QtGlobal这个Include文件,原因大概是因为没有安装Qt导致的,有需要的同学可以下一个Qt装上然后包含Include,像我这种没追求的就直接删除了事~
在出问题的两个项目
Qt4DebugAppender
和Qt5DebugAppender
上右键选择移除再次生成解决方案,OK,全部完成~
还有一步,将配置文件改为
Debug_Unicode
,再生成一次。因为上一次生成的库文件是用在我们自己项目的Release版的,这次我们需要生成用在Debug版的log4cplus库。
这次全部弄完,可以关掉vs了。
在项目中引用log4cplus
先建立一个测试项目。
设置默认就好。
接下来需要引用库了,我是用静态链接的方式。
有两个选择- 把Include文件和库文件复制到当前项目中再引用
- 直接引用原始项目中的。
像我这种追(lan)求(ai)效(fa)率(zuo)的人肯定是选第二种啦~
在
testLog
项目上右键->属性
。在弹出的属性窗口中,选择
C/C++
->常规
->附加包含目录
,选择log4cplus的Include
文件夹。确定确定保存后,还是在
testLog
上右键->添加
->现有项
,分别将D:\log4cplus-1.2.1-rc1\msvc10\Win32\bin.Release_Unicode
下的log4cplusSU.lib
和D:\log4cplus-1.2.1-rc1\msvc10\Win32\bin.Debug_Unicode
下的log4cplusSUD.lib
添加到项目中。如图所示
其实还生成了
log4cplusU.lib
和log4cplusUD.lib
两个文件,但我在测试的时候发现不添加也可以编译成功,就没有加入项目。如果还有其他问题的也可以添加试试~还剩最后一步。在添加的
log4cplusSUD.lib
上右键->属性
,在弹出的属性窗口的左上角选择配置为Release
,然后将从生成中排除
设置为是
,然后确定保存。同样的,在
log4cplusSU.lib
的属性窗口中设置配置文件为Debug
,设置从生成中排除
为是
。这样做的目的是为了让编译器在生成不同的版本时不会找错库文件。
好了,测试一下。将资料中的代码略加修改(原本的有错)。
#include "stdafx.h"#include <log4cplus\consoleappender.h>#include <log4cplus\loggingmacros.h>using namespace log4cplus;using namespace std;int main(){ // 定义一个控制台的Appender SharedAppenderPtr pConsoleAppender(new ConsoleAppender()); // 定义一个简单的Layout,并绑定到Appender auto_ptr<Layout> pSimpleLayout(new SimpleLayout()); pConsoleAppender->setLayout(pSimpleLayout); // 定义Logger,并设置优先级 Logger pTestLogger = Logger::getInstance(_T("LoggerName")); pTestLogger.setLogLevel(WARN_LOG_LEVEL); // 将需要关联Logger的Appender添加到Logger上 pTestLogger.addAppender(pConsoleAppender); // 输出日志信息 LOG4CPLUS_WARN(pTestLogger, "We Can Do It!"); return 0;}
生成试一下,成功!
换成Release版也没有问题~
后记
还是要多折腾啊,不然按着网上的配置教程来,这么强大的库就用不上了。
虽然我也不怎么写C++ ╮(╯_╰)╭
- log4cplus下载地址 ↩
- 如何优雅的在Visual Studio中配置log4cplus
- 如何优雅的统计Visual Studio项目的代码行数
- vs2008中log4cplus的配置
- Visual Studio 2013编译log4cplus
- 在 Visual Studio 2010 中配置SharpPcap
- opencv在visual studio中配置
- MKL在Visual Studio 2010中配置
- 在Visual Studio 2015中配置OpenGL
- Microsoft Visual Studio 2010下log4cplus的安装,集成,测试
- Microsoft Visual Studio 2010下log4cplus的安装,集成,测试
- Microsoft Visual Studio 2010下log4cplus的安装,集成,测试
- Microsoft Visual Studio 2010下log4cplus的安装,集成,测试
- 在Visual Studio 2005的Visual C++中配置Parser Generator
- 在Visual Studio 2005的Visual C++中配置Parser Generator
- opencv在visual studio 2012的配置
- opencv在visual studio的配置技巧
- 关于log4cplus中AsyncAppender的配置
- 关于log4cplus中AsyncAppender的配置
- HBase基本代码实现(二)
- IOS接入微信需要导入的库
- Android RecyclerView工作原理分析(上)
- Android中匿名共享内存demo
- 两层布局如何让下层布局不能点击
- 如何优雅的在Visual Studio中配置log4cplus
- getField 和 getDeclaredField 的区别
- 机器学习中的偏差和方差
- Oracle(创建序列)
- Hibernate知识点
- dubbo问题记录-多注册中心配置错导致爆内存
- Ancient Cipher (UVA-10340 && POJ-2159)
- Android适配三星S8的18.5:9,小米mix全面屏
- Android RecyclerView工作原理分析(下)