日志库封装(项目通用)

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

日志级别管理

日志库支持多种日志级别(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__) }; ```

相关推荐
MSTcheng.13 小时前
【C++】C++11新特性(二)
java·开发语言·c++·c++11
愚者游世13 小时前
Delegating Constructor(委托构造函数)各版本异同
开发语言·c++·程序人生·面试·改行学it
小镇敲码人13 小时前
探索华为CANN框架中的ACL仓库
c++·python·华为·acl·cann
liu****14 小时前
2.深入浅出理解虚拟化与容器化(含Docker实操全解析)
运维·c++·docker·容器·虚拟化技术
A9better14 小时前
C++——不一样的I/O工具与名称空间
开发语言·c++·学习
王老师青少年编程14 小时前
2024年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第2题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
MSTcheng.15 小时前
【C++】C++11新特性(三)
开发语言·c++·c++11
田野追逐星光15 小时前
STL容器list的模拟实现
开发语言·c++·list
StandbyTime15 小时前
《算法笔记》学习记录-第二章 C/C++快速入门
c++·算法笔记
我在人间贩卖青春15 小时前
C++之结构体与类
c++··结构体