日志库封装(项目通用)

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

日志级别管理

日志库支持多种日志级别(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<spdlog::logger> GetLogger();

private:

    Logger();

    Logger(const Logger&) = delete;

    Logger& operator=(const Logger&)=delete;

private:

    std::shared_ptr<spdlog::logger> _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__)

  


};
相关推荐
神仙别闹3 小时前
基于C++实现(控制台)景区旅游管理系统
开发语言·c++·旅游
hold?fish:palm15 小时前
kv存储主从复制的设计与实现
c++·redis·后端
啦啦啦啦啦zzzz16 小时前
算法:贪心算法
c++·算法·leetcode·贪心算法
charlie11451419116 小时前
现代C++工程实践 WeakPtr 实战(三):WeakPtrFactory 与「最后成员」惯用法
开发语言·c++·开源项目·现代c++
JetComXCpp17 小时前
给 Win32 窗口加上毛玻璃效果——纯 D3D11 实现,零依赖
c++
ysa05103019 小时前
【板子】二分答案(最大最小?)
c++·笔记·算法·板子
是多巴胺不是尼古丁19 小时前
C++基础知识
开发语言·c++
stolentime20 小时前
SP8549 MAIN75 - BST again题解
c++·算法·二叉树·深度优先·图论·记忆化搜索·组合数学
ziguo112220 小时前
C/C++ 错误处理全解:从 errno 到 C++ 异常
linux·c语言·c++·windows·visual studio
stolentime20 小时前
AT_pakencamp_2020_day1_k Gcd of Sum题解
c++·算法