spdlog1

14 篇文章 0 订阅
2 篇文章 0 订阅

前提在ubuntu16上安装了spdlog
在这里插入图片描述

示例代码结构

文件结构描述

  • logger.cpp
#include "logger.h"

void LoggerInit()
{
	// 按文件大小
	//auto file_logger = spdlog::rotating_logger_mt("daily_logger", "logs/log.txt", 1024 * 1024 * 20,  5);

	// 每天2:30 am 新建一个日志文件
	auto logger = spdlog::daily_logger_mt("daily_logger", "../LogFolder/logs/daily.txt", 11, 52);

	// 遇到warn级别以上的日志进行持久化,防止日志丢失
	logger->flush_on(spdlog::level::warn);

	//日志每3秒钟向磁盘持久化
	spdlog::flush_every(std::chrono::seconds(3));

	// 设置默认的logger
	auto console = spdlog::stdout_color_mt("console");
	spdlog::set_default_logger(console);

	// 设置日志输出级别
	spdlog::set_level(spdlog::level::info);

	// 设置日志格式
	spdlog::set_pattern("[%Y-%m-%d %H:%M:%S][%l][%s:%#] %v");
}


void LoggerDrop()
{
	spdlog::drop_all();
}

  • example1.cpp
// https://www.cnblogs.com/spxie/p/15571535.html#:~:text=Spdlog%E5%AE%89%E8%A3%85%E5%8F%8A%E4%BD%BF%E7%94%A8%20%28%E5%8C%85%E5%90%ABCmake%E5%AE%89%E8%A3%85%E6%95%99%E7%A8%8B%29%201%201.%E5%B7%A5%E7%A8%8B%E5%8A%A0%E5%85%A5include%E5%8F%8Alib%E8%B7%AF%E5%BE%84%2C%20%E5%B9%B6%E4%B8%94%20lib%E4%B8%AD%E5%8A%A0%E5%85%A5spdlog%20include%E8%B7%AF%E5%BE%84%3A%20%2Froot%2Fspdlog%2Finclude,2.%E5%8A%A0%E5%85%A5%E5%A4%B4%E6%96%87%E4%BB%B6logger.h%20...%203%203.%E5%8A%A0%E5%85%A5cpp%E6%96%87%E4%BB%B6logger.cpp%20...%204%204.%E4%BD%BF%E7%94%A8%20
#include "logger.h"
int main(){
    LoggerInit();
    int usFlagCPI = 4;
    int diff(10);
    INFO("Push a cpi data!PluseNum is:{},SignalPreProc time is:{}ms",usFlagCPI,diff);
    LoggerDrop();
}   
  • logger.h
#ifndef LOGGER_H_
#define LOGGER_H_

#include "spdlog/spdlog.h"
#include "spdlog/sinks/rotating_file_sink.h"
#include "spdlog/sinks/daily_file_sink.h"
#include "spdlog/sinks/stdout_color_sinks.h"
#include <iostream>
#include <memory>

// spd带行号的打印,同时输出控制台和文件(定义三级日志等级)
#define INFO(...) SPDLOG_LOGGER_INFO(spdlog::default_logger_raw(), __VA_ARGS__);SPDLOG_LOGGER_INFO(spdlog::get("daily_logger"), __VA_ARGS__)
#define WARN(...) SPDLOG_LOGGER_WARN(spdlog::default_logger_raw(), __VA_ARGS__);SPDLOG_LOGGER_WARN(spdlog::get("daily_logger"), __VA_ARGS__)
#define ERROR(...) SPDLOG_LOGGER_ERROR(spdlog::default_logger_raw(), __VA_ARGS__);SPDLOG_LOGGER_ERROR(spdlog::get("daily_logger"), __VA_ARGS__)
//set_level 设置日志级别
// typedef enum
// {
//     trace = 0,
//     debug = 1,
//     info = 2,
//     warn = 3,
//     err = 4,
//     critical = 5,
//     off = 6
// } level_enum;

extern void LoggerInit();

extern void LoggerDrop();

#endif /*LOGGER_H_ */

  • CMakeLists.txt
make_minimum_required(VERSION 3.10)
project(spdlog_examples CXX)

set(SPDLOG_DIR ${CMAKE_SOURCE_DIR})
include_directories(${SPDLOG_DIR}/include)
set(CMAKE_CXX_STANDARD 11)
find_package(spdlog REQUIRED)
# add_executable(example example.cpp)
# target_link_libraries(example PRIVATE spdlog::spdlog) # 依赖了spdlog::spdlog,即spdlog,即静态库
add_executable(example1 ./src/example1.cpp ./src/logger.cpp)
target_link_libraries(example1 PRIVATE spdlog::spdlog) # 依赖了spdlog::spdlog,即spdlog,即静态库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中的spdlog是一个快速、易于使用的日志记录库。它提供了多种日志记录模式,支持多线程,具有灵活的格式化选项,并且在性能上表现出色。你可以使用spdlog来记录应用程序中的各种事件、错误和调试信息。 要使用spdlog,首先你需要在你的C++项目中包含spdlog头文件,并将spdlog库链接到你的项目中。你可以通过下载spdlog的源代码并手动添加到你的项目中,或者使用包管理工具(如vcpkg)来安装spdlog。 下面是一个简单的示例,展示了如何在C++中使用spdlog进行日志记录: ```cpp #include <spdlog/spdlog.h> int main() { // 创建一个名为"my_logger"的日志记录器 auto logger = spdlog::stdout_logger_mt("my_logger"); // 设置日志记录级别为调试 spdlog::set_level(spdlog::level::debug); // 记录不同级别的日志信息 logger->info("This is an info message"); logger->warn("This is a warning message"); logger->error("This is an error message"); return 0; } ``` 在上面的示例中,我们创建了一个名为"my_logger"的日志记录器,并将其输出到控制台(stdout)。然后,我们设置日志记录级别为调试(debug),这意味着所有调试级别及更高级别的日志消息都会被记录。 最后,我们使用logger对象记录了一些不同级别的日志消息。日志消息的格式可以根据你的需要进行自定义。 这只是一个简单的示例,你可以根据你的具体需求使用spdlog进行更复杂的日志记录。你可以查看spdlog的文档以获取更多详细信息和示例:https://github.com/gabime/spdlog

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值