日志库封装(项目通用)

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

日志级别管理

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

  


};
相关推荐
2601_962218617 分钟前
C++中分配器allocator的实现
开发语言·c++
单片机设计·······37 分钟前
【dz-1162】汽车前玻璃雨刮器设计
c++·单片机·嵌入式硬件
AI智讯中枢1 小时前
高性能 C++ 实战 (五):perf+FlameGraph 火焰图生产实战,精准定位 CPU / 缓存 / 锁瓶颈,避坑 + 完整实操案例
linux·c++·性能调优·性能分析·perf·flamegraph·火焰图
繁华的地方不一定留下你的脚印1 小时前
C++ 算法与 ranges:用 find_if、transform 写清数据处理意图
开发语言·c++·算法
张小姐的猫1 小时前
【AI大模型接入SDK】 —— 前端页面 & 项目总结与拓展
前端·数据结构·数据库·c++·人工智能·chatgpt
AC赳赳老秦2 小时前
财报附注表格精准提取:OpenClaw 从 PDF 年报附注挖掘隐藏明细,补齐财务分析维度
java·汇编·c++·python·青少年编程·deepseek·openclaw
欧特克_Glodon2 小时前
OpenCV计算机视觉开发入门与实践(基于C++):专栏内容介绍及目录
c++·人工智能·opencv·计算机视觉
码匠许师傅2 小时前
【C++三方组件】Asio 下篇:C++20 协程版 TCP 客户端与服务端
c++·tcp/ip·c++20
一只旭宝3 小时前
【C++复习】四种类型转换 + 常见设计模式 + Redis/MySQL(后端面试复习完整版)
c++·redis·笔记·mysql·设计模式
rhett. li3 小时前
用 AI 写 C++ 桌面 UI:TRAE + nim_duilib 实战指南
c++·人工智能·ui