日志库封装(项目通用)

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

日志级别管理

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

  


};
相关推荐
千谦阙听7 小时前
C++类和对象(中):默认成员函数、构造与析构、拷贝构造、运算符重载
开发语言·c++·学习
weixin_307779137 小时前
一维无粘 Burgers 方程的激波形成问题:MacCormack 格式求解
c++·算法·matlab
HugoStudio_SWAN7 小时前
洛谷 B4500 / B4449 / B3843 凯撒密码、密码强度与密码合规——加密与安全的三道门
c++·学习·程序人生·算法·安全
雾里看山8 小时前
源码目录、构建目录与 out-of-source build
c++·软件构建·cmake
渡我白衣10 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
如意猴10 小时前
【C++】001--C++入门(1)
开发语言·c++
hetao173383710 小时前
2026-09-01~09-04 hetao1733837 的刷题记录
c++·算法
HugoStudio_SWAN13 小时前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
raindayinrain14 小时前
c++并发
c++
j7~14 小时前
【C++】智能指针的使用及其原理--详解
c++·c++11·内存泄漏·智能指针·raii·boost智能指针