日志库封装(项目通用)

日志库的封装适用于项目调试问题,可以通过打印日志信息具体定位到某一位置。

日志级别管理

日志库支持多种日志级别(TRACE、DEBUG、INFO、WARN、ERROR、FATAL等)。

开发阶段,可以将日志设置为DEBUG,输出详细的信息;生产环境中,将日志级别设置为ERROR或WARNING,只记录关键的错误和警告信息。

日志格式化

日志库可以提供灵活的日志格式化功能,包括时间戳、日志级别、线程信息、文件名、行号等。如:

2025-08-12 10:00:00\] \[INFO\] \[main.cpp:124\] This is an info message.这种格式化有助于快速具体定位问题和理解日志内容。 cout输出输出格式单一,没有内置的格式化功能,需要手动添加时间戳等信息。 ## spdlog封装 采用google的spdlog日志库进行日志管理,对spdlog采用单例模式进行封装。 ```MyLog.h namespace ys { class Logger { public: static void InitLogger(std::string logger_name,std::string log_file,spdlog::level::level_enum log_level); static std::shared_ptr GetLogger(); private: Logger(); Logger(const Logger&) = delete; Logger& operator=(const Logger&)=delete; private: std::shared_ptr _logger; std::mutex _mutex; }; #define DUBG(format, ...) Logger::GetLogger()->debug(std::string("[{:>10s}:{:<4d}]")+format,__FILE__,__LINE__, ##__VA_ARGS__) #define INFO(format, ...) Logger::GetLogger()->info(std::string("[{:>10s}:{:<4d}]")+format,__FILE__,__LINE__, ##__VA_ARGS__) #define WARN(format, ...) Logger::GetLogger()->warn(std::string("[{:>10s}:{:<4d}]")+format,__FILE__,__LINE__, ##__VA_ARGS__) #define ERR(format, ...) Logger::GetLogger()->error(std::string("[{:>10s}:{:<4d}]")+format,__FILE__,__LINE__, ##__VA_ARGS__) }; ```

相关推荐
样例过了就是过了18 小时前
LeetCode热题100 最长公共子序列
c++·算法·leetcode·动态规划
谭欣辰18 小时前
C++ 排列组合完整指南
开发语言·c++·算法
橙子也要努力变强19 小时前
信号捕捉底层机制-机理篇2
linux·服务器·c++
盐焗鹌鹑蛋19 小时前
【C++】stack和queue类
c++
郝学胜-神的一滴20 小时前
罗德里格斯旋转公式(Rodrigues‘ Rotation Formula)完整推导
c++·unity·godot·图形渲染·three.js·unreal
lzh2004091920 小时前
深入理解进程:从PCB内核结构到写时拷贝的底层实战
linux·c++
aseity20 小时前
跨平台项目中QString 与 非Qt 跨平台动态库在字符集上的一个实用的互操作约定.
c++·经验分享
CN-Dust20 小时前
【C++】while语句例题专题
数据结构·c++·算法
用户8055336980320 小时前
现代Qt开发教程(新手篇)1.11——定时器
c++·qt
澈20721 小时前
STL迭代器:容器遍历的万能钥匙
开发语言·c++