48 lines
2.8 KiB
C++
48 lines
2.8 KiB
C++
#ifndef RDP_LOG_H
|
||
#define RDP_LOG_H
|
||
#pragma once
|
||
/*************************************日志输出模块*******************************************/
|
||
// 基于 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(); //初始化日志输出(标准输出 + 日志文件;由 GetB() 调用)
|
||
void Shutdown(); //flush、释放 logger 并关闭日志文件(由 Destroy() 调用)
|
||
std::string log_file_path(); //当前日志文件全路径(未初始化或文件创建失败时为空串)
|
||
}
|
||
|
||
//日志级别宏(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
|