日志库封装(项目通用)

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

日志级别管理

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

相关推荐
Bella的成长园地13 小时前
面试中关于 c++ async 的高频面试问题有哪些?
c++·面试
彷徨而立13 小时前
【C/C++】什么是 运行时库?运行时库 /MT 和 /MD 的区别?
c语言·c++
qq_4171292513 小时前
C++中的桥接模式变体
开发语言·c++·算法
No0d1es16 小时前
电子学会青少年软件编程(C语言)等级考试试卷(三级)2025年12月
c语言·c++·青少年编程·电子学会·三级
bjxiaxueliang17 小时前
一文掌握C/C++命名规范:风格、规则与实践详解
c语言·开发语言·c++
xu_yule17 小时前
网络和Linux网络-13(高级IO+多路转接)五种IO模型+select编程
linux·网络·c++·select·i/o
2301_7657031418 小时前
C++与自动驾驶系统
开发语言·c++·算法
轩情吖18 小时前
Qt的窗口(三)
c++·qt
热爱编程的小刘18 小时前
Lesson04---类与对象(下篇)
开发语言·c++·算法
郝学胜-神的一滴18 小时前
Linux网络编程之listen函数:深入解析与应用实践
linux·服务器·开发语言·网络·c++·程序人生