第一步:
參考下面教程進行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();