windows10 下使用 spdlog 总结(spdlog 1.7)

注意: 

  请选择对c++11 支持 完善的编译器, 为什么vs2013不行,因为: spdlog一直在更新,VS2013并没有完全支持C++11(踩坑总结)

 

1、准备:

  A、spdlog 源码  : https://github.com/gabime/spdlog

  B 、cmake gui:  https://cmake.org/download/

  C、vs2015 update3  or   upper: 没有下载地址? 点我

 

2、配置

  A、解压 spdlog 源码, 并打开解压后的文件夹,新建 build 文件夹

  B、打开 cmake, 添加源码目录 和输出目录, 见下图:

 

windows10 下使用 spdlog 总结(spdlog 1.7)

  C、点击 cmake UI的 configure.  这里演示,下面选择的的是win32。点击finish

windows10 下使用 spdlog 总结(spdlog 1.7)

  D、configure 完成后, 选择合适的工程, 再点击 generate生成对应的 工程文件。

windows10 下使用 spdlog 总结(spdlog 1.7)

  E、生成成功, 至此, 配置到此结束,

windows10 下使用 spdlog 总结(spdlog 1.7)

 

 

 

下面是使用方法: 踩坑总结:

  1、按照 文档(https://github.com/gabime/spdlog/wiki)指示, 需要将库安装到操作系统的对应文件夹下去, 上面cmake中选择生成的项目: install 可实现安装。这样, 我们就可以像使用系统库文件一样使用他们了。  优点: 方便,无需修改代码,生成解决方案即可实现安装,新手省却很多麻烦,缺点: 相比直接拷贝到项目下使用(相对路径)而言,这样的方法灵活性不佳。

  2、使用直接拷贝到项目文件夹下直接使用。优点: 方便灵活, 缺点,需要手动修改代码。

  3、提出一种解决方案来解决2中出现的问题:封装。 例如: 动态链接库 或者 自己写一个类 将其封装起来,我们再使用类或者动态链接库的接口实现记录日志。欢迎留言其他的方案。

  4、安装到系统指定目录下的方法称为: 方案1.   拷贝到项目文件夹下使用的方法称为: 方案2

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------

方案1: 

  1、打开 cmake的输出目录(我这里是在 源码解压目录下build文件夹), (注意:请使用管理员方式打开VS201X ? 因为要将文件安装到指定的系统文件夹下,没有对应的权限,程序无法执行写入)打开解决方案 spdlog.sln (以实际生成的为准)。 若上面的配置你和我选择的一样,应该会得到下图的项目:

  windows10 下使用 spdlog 总结(spdlog 1.7)

  2、选择 项目:  ALL_BUILD, 右键选择生成。 

  3、待上一步生成结束后, 选择 项目: INSTALL, 右键生成。 可以观察到输出窗口中 将 spdlog文件安装到系统的具体目录。 

windows10 下使用 spdlog 总结(spdlog 1.7)

  安装结束,  回到 spdlog教程: https://github.com/gabime/spdlog/wiki/1.-QuickStart . 试试自己的第一个spdlog把。也可以阅读 源码目录下的example文件夹下的example.cpp, 总结其使用方法。

--------- 方案1安装使用结束------------------------

 

 

下面是方案2的使用。

  方案2  配置上没有 方案1复杂。只需要spdlog源码。 这里演示, 自己创建了一个空的 Visual c++ 项目, 并手动添加了一个源文件 main.cpp

  windows10 下使用 spdlog 总结(spdlog 1.7)

步骤: 

  1、拷贝spdlog源码解压目录下的include文件夹到当前项目文件夹下。

windows10 下使用 spdlog 总结(spdlog 1.7)

  2、直接在代码中对spdlog相关文件进行引用即可。

  添加头文件以用。 ( spdlog有多种记录日志的方法,这里仅 演示一种, 正在摸索其他方法)

#include "include/spdlog/spdlog.h"h"
#include "include/spdlog/sinks/rotating_file_sink.h"

  添加对 spdlog的空间引用。

using namespace spdlog;

  调用接口,记录日志:

int main()
{
    // Create a file rotating logger with 5mb size max and 3 rotated files.
    auto rotating_logger_a = spdlog::rotating_logger_mt("log_file_a", "logs/ra.txt", 1024 * 1024 * 5, 100);

    // testing 
    for (int i = 0; i < 1024 * 10; i++)
    {
        rotating_logger_a->info("index = {}", i);

        cout << "index = " << i << endl;
    }

    spdlog::shutdown();

    system("pause");
    return 0;
}

     完整源码如下:

// --------------------------------------------------------------------
// 下面是对sdplog的文件引用
#include "include/spdlog/spdlog.h"
#include "include/spdlog/cfg/env.h" 
#include "include/spdlog/sinks/basic_file_sink.h"
#include "include/spdlog/sinks/rotating_file_sink.h"


#include <iostream>
using namespace std;
using namespace spdlog;

int main()
{
    // Create a file rotating logger with 5mb size max and 3 rotated files.
    auto rotating_logger_a = spdlog::rotating_logger_mt("log_file_a", "logs/ra.txt", 1024 * 1024 * 5, 100);

    // testing 
    for (int i = 0; i < 1024 * 10; i++)
    {
        rotating_logger_a->info("index = {}", i);

        cout << "index = " << i << endl;
    }

    spdlog::shutdown();

    system("pause");
    return 0;
}

  3、编译 或者 ctrl + shift + B.。 发现输出 窗口中 提示错误:无法找到文件。

windows10 下使用 spdlog 总结(spdlog 1.7)

 重点来了:  这就是我说的, 需要手动修改代码。 双击错误提示, 定位到下图:

windows10 下使用 spdlog 总结(spdlog 1.7)

改为下面的代码: 

#include "include/spdlog/common.h"
#include "include/spdlog/details/registry.h"
#include "include/spdlog/logger.h"
#include "include/spdlog/version.h"
#include "include/spdlog/details/synchronous_factory.h"

再次编译,  还是提示相同的错误类型, 继续按照上面的方式改。改为相对路径。因为这些文件来自 拷贝 过来的 spdlog 源码。

windows10 下使用 spdlog 总结(spdlog 1.7)

  重复编译,改, 这样的操作。 直到编译成功如下图:

 windows10 下使用 spdlog 总结(spdlog 1.7)

 F5, 运行结果: 

windows10 下使用 spdlog 总结(spdlog 1.7)

 成功。 证明可以正常使用spdlog的相关接口了。  再来看看 演示例子输出文件夹情况:

windows10 下使用 spdlog 总结(spdlog 1.7)

 

后记:

  1、继续学习spdlog

  2、针对方案2的缺点,可以 采用封装的方法,更好的为应用程序服务

  3、偷懒: 若你也是按   方案2 操作的, 那就把 演示项目文件夹下的include下的spdlog拷贝一份。下次直接用,不用再次修改啦。   

  4、以实际的spdlog的情况为准。本文仅为参考。 

 

windows10 下使用 spdlog 总结(spdlog 1.7)

上一篇:数据库表设计总结


下一篇:经典SQL语句大全