Spdlog安裝及使用(包含Cmake安裝教程)


第一步:

參考下面教程進行spdlog安裝(如果沒有安裝cmake,需要先安裝cmake)

spdlog安裝教程https://blog.csdn.net/xmcy001122/article/details/105864473/

cmake安裝教程https://www.cnblogs.com/yanqingyang/p/12731855.html

第二步:

1.工程加入include及lib路徑, 並且 lib中加入spdlog

include路徑: /root/spdlog/include

lib路徑:/root/spdlog/build

2.加入頭文件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__)

extern void LoggerInit();

extern void LoggerDrop();

#endif /*LOGGER_H_ */

3.加入cpp文件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", 2, 30);

	// 遇到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();
}

4.使用

工程開始需要

LoggerInit();

用法示例:

INFO("Push a cpi data!PluseNum is:{},SignalPreProc time is:{}ms",usFlagCPI,diff);

工程結束需要

LoggerDrop();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM