日志库封装(项目通用)

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

日志级别管理

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

  


};
相关推荐
码匠许师傅6 分钟前
【C++ 面试真题】聊聊 C++ 中的 lambda 表达式
java·c++·面试
依然鸣15 分钟前
PTA团体程序设计天梯赛L1真题讲解L1-085-088
数据结构·c++·经验分享·算法·深度优先·pat考试
沙盘客39 分钟前
AFSIM 14篇 C++ 插件开发:扩展你的仿真能力
c++·后端
NeilYuen41 分钟前
【vemory】高性能KV存储AOF方案设计
linux·c++·redis·缓存
王老师青少年编程3 小时前
2021年CSP-J初赛真题及答案解析(完善程序2)
c++·真题·csp-j·答案·csp·初赛·信奥赛
有点。3 小时前
C++二叉树(一)
开发语言·数据结构·c++
Lazionr3 小时前
stack与queue:底层实现与容器适配器
开发语言·数据结构·c++
豆沙沙包?4 小时前
C++~~~vector容器(p31-P40)
开发语言·c++
小小de风呀4 小时前
de风——【从零开始学习C++】(十八):AVL树——让二叉搜索树自己“站起来“的自平衡黑科技
c++·科技·学习
牛油果子哥q4 小时前
C++STL容器详解:vector/list/string底层扩容、迭代器失效终极解决、容器选型避坑
开发语言·c++·list