更新:1、修改日志组件,使用spdlog日志库;

Signed-off-by: waiwaylee <waiwaylee@foxmail.com>
This commit is contained in:
2026-10-28 13:43:29 +08:00
parent 7e4cb2922d
commit 24ce1e6dbf
130 changed files with 27635 additions and 187 deletions
+35 -15
View File
@@ -2,26 +2,46 @@
#define RDP_LOG_H
#pragma once
/*************************************日志输出模块*******************************************/
// 功能:
// 1) rdp_log::Init():按 parameters.h 中 RDP_LOG_ENABLE 宏开关决定是否将 std::cout
// 重定向到日志文件(RDP_LOG_DIR 目录,文件名按当前日期+时间自动生成)。
// 开关关闭(注释掉 RDP_LOG_ENABLE)时不做重定向,日志仍输出到标准输出。
// 2) rdp_log::Shutdown():恢复 std::cout 原始缓冲区(回到控制台)并关闭日志文件。
// 3) RDP_LOG 宏:日志输出宏,在每条日志前自动附加 [时间戳][代码文件:行号] 信息,
// 随后输出到 std::cout(若开关开启则随 cout 一并写入日志文件)。
// 用法示例:
// RDP_LOG << "目标批号:" << track_index << std::endl;
#include <iostream>
// 基于 spdlog v1.17.0(third_party/spdlog,来源/版本见该目录 UPSTREAM.md,以静态库目标
// spdlog 链接,见 CMakeLists.txt):
// 1) rdp_log::Init():创建 RDP_LOG_DIR 下按「日期+时间」命名的日志文件(每次初始化一个
// 文件;同一秒内文件已存在时追加 _1~_999 后缀),默认 logger 同时输出到 标准输出 与
// 日志文件 两个 sink。由 Data_Process_Factory::GetB() 调用;
// 2) rdp_log::Shutdown():打印结束标记、flush 并释放 logger(关闭日志文件),由
// Data_Process_Factory::Destroy() 调用;
// 3) 日志宏 RDP_LOG_TRACE / RDP_LOG_DEBUG / RDP_LOG_INFO / RDP_LOG_WARN /
// RDP_LOG_ERROR / RDP_LOG_CRITICAL:级别与 spdlog 一致(RDP_LOG_ERR 为
// RDP_LOG_ERROR 的别名),支持 fmt 风格的格式化,用法示例:
// RDP_LOG_INFO("目标批号:{},时间:{}", track_index, cpi_time);
// 低于 SPDLOG_ACTIVE_LEVEL 的日志调用在编译期被剔除(实参不求值),该级别由 CMake
// 选项 RDP_LOG_LEVEL 控制(见 CMakeLists.txt 与 README 10.4),即原 RDP_LOG_ENABLE
// 开关改由 SPDLOG_ACTIVE_LEVEL 在编译期控制日志级别(OFF = 编译期关闭全部日志)。
//
// 日志文件路径/名称与旧实现保持一致:RDP_LOG_DIR(.\rdp_logs\)+ rdp_YYYYMMDD_HHMMSS.log。
// 日志行格式:"[YYYY-MM-DD HH:MM:SS.mmm] [级别] [文件名:行号] 内容",级别为 spdlog 默认
// 名称 trace/debug/info/warning/error/critical。
#include <string>
// 第三方头文件告警隔离:spdlog 按 third_party 依赖处理(见 README 4.5)
#pragma warning(push, 0)
#include <spdlog/spdlog.h>
#pragma warning(pop)
namespace rdp_log
{
bool Init(); //初始化日志输出(由 Data_Process_Factory::GetB() 调用)
void Shutdown(); //恢复 std::cout 并关闭日志文件(由 Data_Process_Factory::Destroy() 调用)
std::string prefix(const char *file, int line); //生成 "[时间戳][文件名:行号] " 前缀字符串
bool Init(); //初始化日志输出(标准输出 + 日志文件;由 GetB() 调用)
void Shutdown(); //flush、释放 logger 并关闭日志文件(由 Destroy() 调用)
std::string log_file_path(); //当前日志文件全路径(未初始化或文件创建失败时为空串)
}
//日志输出宏:自动附加 时间戳、代码文件、代码行号 后输出到标准输出(std::cout)
#define RDP_LOG std::cout << rdp_log::prefix(__FILE__, __LINE__)
//日志级别宏(spdlog 编译期级别过滤:低于 SPDLOG_ACTIVE_LEVEL 的调用被剔除、实参不求值)
#define RDP_LOG_TRACE(...) SPDLOG_TRACE(__VA_ARGS__)
#define RDP_LOG_DEBUG(...) SPDLOG_DEBUG(__VA_ARGS__)
#define RDP_LOG_INFO(...) SPDLOG_INFO(__VA_ARGS__)
#define RDP_LOG_WARN(...) SPDLOG_WARN(__VA_ARGS__)
#define RDP_LOG_ERROR(...) SPDLOG_ERROR(__VA_ARGS__)
#define RDP_LOG_CRITICAL(...) SPDLOG_CRITICAL(__VA_ARGS__)
//兼容别名:需求中的级别名 err 对应 spdlog::level::err,宏名同时提供 RDP_LOG_ERR
#define RDP_LOG_ERR(...) RDP_LOG_ERROR(__VA_ARGS__)
#endif // RDP_LOG_H