一个简单的spdlog使用示例

打印 上一主题 下一主题

主题 931|帖子 931|积分 2793

目录

spdlog是一个开源、跨平台、无依赖、只有头文件的C++11日志库,网上介绍的文章有很多这里就不过多的介绍了,GitHub链接:https://github.com/gabime/spdlog
引用源码

先下载spdlog的源码,将源码的include文件夹复制到自己的项目文件夹下:

然后在项目属性中包含include目录,如下图所示:

封装Log头文件

一般的项目对日志要求都不高,主要是要求日志线程安全、异步写入文件、每天生成新日志、支持日志回调显示,spdlog稍微配置一下即可。
把spdlog相关的配置全放到Log.h文件中,封装成Log头文件有两个好处:

  • 可以随时替换后台日志实现
  • 对外只用暴露一个头文件
Log头文件的代码如下:
[code]#pragma once#include "spdlog/spdlog.h"#include "spdlog/async.h"#include "spdlog/sinks/daily_file_sink.h"#include "spdlog/stopwatch.h"#include "spdlog/sinks/stdout_color_sinks.h"#include "spdlog/sinks/callback_sink.h"#include void init_spdlog(){    //异步日志,具有8k个项目和1个后台线程的队列    spdlog::init_thread_pool(8192, 1);    //标准控制台输出    auto stdout_sink = std::make_shared();    stdout_sink->set_level(spdlog::level::debug);    //日志文件输出,0点0分创建新日志    auto file_sink = std::make_shared("logs/log.txt", 0, 0);    file_sink->set_level(spdlog::level::info);    //日志回调    auto callback_sink = std::make_shared([](const spdlog::details::log_msg& msg)        {            //日志记录器名称            std::string name(msg.logger_name.data(), 0, msg.logger_name.size());            //日志消息            std::string str(msg.payload.data(), 0, msg.payload.size());            //日志时间            std::time_t now_c = std::chrono::system_clock::to_time_t(msg.time);            //回调的处理逻辑自己根据项目情况定义,比如实时显示到UI、保存到数据库等等                        //.... 回调处理逻辑的示例            //std::tm localTime;            //localtime_s(&localTime, &now_c);            //char timeStr[50];            //std::strftime(timeStr, sizeof(timeStr), "%Y-%m-%d %H:%M:%S", &localTime);            //// 获取毫秒数            //auto duration = msg.time.time_since_epoch();            //auto milliseconds = std::chrono::duration_cast(duration).count() % 1000;            //std::cout

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

饭宝

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表