VS2017编译配置和使用LOG4CPP

1.环境
(1)Windows7 64bit
(2)VS2017
(3)log4cpp-1.1.3.tar.gz

2.编译
参考:http://www.jiazi.cn/blog/?id=55

解压log4cpp-1.1.3.tar.gz 得到log4cpp文件夹
该版本指供了msvc6,msvc7(2003),msvc10(2010)的编译解决方案,其它编译解决方案可以从中选择一个进行调整。
选择msvc10,复制并粘贴到 log4cpp文件夹,重命名为msvc2017
cd msvc2017
open the msvc2010.sln解决方案
点OK,按要求升级
point1:
在右侧项目中serach:NTEventLogCategories.mc 右键打开属性:修改Command Line。

原:
"$(VS100COMNTOOLS)vsvars32.bat" 
 
if not exist $(OutDir) md $(OutDir)
 
mc.exe -h "$(OutDir)" -r "$(OutDir)" "$(ProjectDir)..\%(Filename).mc"
 
rc.exe -r -fo "$(OutDir)%(Filename).res" "$(OutDir)%(Filename).rc"
 
link.exe /MACHINE:IX86 -dll -noentry -out:"$(OutDir)NTEventLogAppender.dll" "$(OutDir)%(Filename).res"

后:
if not exist $(OutDir) md $(OutDir)
 
mc.exe -h "$(OutDir)\" -r "$(OutDir)\" "$(ProjectDir)..\%(Filename).mc"
 
rc.exe -r -fo "$(OutDir)%(Filename).res" "$(OutDir)%(Filename).rc"
 
link.exe /MACHINE:IX86 -dll -noentry -out:"$(OutDir)NTEventLogAppender.dll" "$(OutDir)%(Filename).res"

point2:sprintf被重定义,所以用宏去关掉
参考:https://www.cnblogs.com/happyamyhope/p/6872485.html

配置项目XXX属性-C/C++预处理器--添加HAVE_SNPRINTF

point3:
查看log4cpp的运行库选项:配置项目XXX属性---C/C++--代码生成---运行库。。。。

在使用log4cpp的工程中药保持一致!!!!!

point4:!!!!
参考https://blog.csdn.net/huguohu2006/article/details/8486817
根据运行库配置忽略相关的库:配置项目XXX属性--LINK--输入---忽略特定的库---
下表显示根据要使用的运行时库应忽略的库。

若要使用第一行运行时库    请忽略第2行的这些库

单线程 (libc.lib)

libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

多线程 (libcmt.lib)

libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

使用 DLL 的多线程 (msvcrt.lib)

libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

调试单线程 (libcd.lib)

libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib

调试多线程 (libcmtd.lib)

libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib

使用 DLL 的调试多线程 (msvcrtd.lib)

libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib

然后编译就OK了。

注意:右侧项目中有多个解决方案,如log4cpp是共享库、log4cppLIB是静态库,还有一些测试用例,可以不用管。每个都可以邮件单独
生成解决方案

 

3.配置

 

 

4.测试

参考:https://www.cnblogs.com/happyamyhope/p/6872485.html
配置环境变量:主要是为类LINK 库和头文件
#include "pch.h"
#include <iostream>
#include <log4cpp/Category.hh>
#include <log4cpp/Appender.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/Priority.hh>
#include <log4cpp/PatternLayout.hh>
#include <log4cpp/RollingFileAppender.hh>
using namespace std;

int main(int argc, char* argv[])
{
    log4cpp::PatternLayout* pLayout1 = new log4cpp::PatternLayout();//创建一个Layout;
    pLayout1->setConversionPattern("%d: %p %c %x: %m%n");//指定布局格式;

    log4cpp::PatternLayout* pLayout2 = new log4cpp::PatternLayout();
    pLayout2->setConversionPattern("%d: %p %c %x: %m%n");

    log4cpp::Appender* fileAppender = new log4cpp::FileAppender("fileAppender", "wxb.log");//创建一个Appender;
    fileAppender->setLayout(pLayout1);//将指定的Layout添加到Appender;

    log4cpp::RollingFileAppender* rollfileAppender = new log4cpp::RollingFileAppender(
        "rollfileAppender", "rollwxb.log", 5 * 1024, 1);
    rollfileAppender->setLayout(pLayout2);

    log4cpp::Category& root = log4cpp::Category::getRoot().getInstance("RootName");//从系统中得到Category的根;
    root.addAppender(fileAppender);//将Appender添加到Category;
    root.addAppender(rollfileAppender);
    root.setPriority(log4cpp::Priority::DEBUG);//设置Category的优先级;

    //开始记录日志;
    for (int i = 0; i < 100; i++)
    {
        string strError;
        ostringstream oss;
        oss << i << ":Root Error Message!";
        strError = oss.str();
        root.error(strError);
    }

    log4cpp::Category::shutdown();//关闭Category;
    return 0;

}

在工程文件中就可以找到日志文件wxb.log:
2019-07-24 15:12:07,837: ERROR RootName : 0:Root Error Message!
2019-07-24 15:12:07,838: ERROR RootName : 1:Root Error Message!
2019-07-24 15:12:07,838: ERROR RootName : 2:Root Error Message!
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2019-07-24 15:12:07,838: ERROR RootName : 99:Root Error Message!
2019-07-24 15:12:07,838: ERROR RootName : 100:Root Error Message!
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值