个人使用c++ Qt 写的log 日志功能,经过目前10 多个项目测试,总体比较稳定,支持限制log个数,支持每日生成日志文件 支持固定时间重新生成日志文件,纯开源。

使用办法见下图。 

链接:https://pan.baidu.com/s/1NBjTin67ECWz5QA8voIptA 
提取码:vjhw

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基于spdlogQt项目中的日志系统,包含了日志打印信息颜色区分、日志文件轮换、日志压缩等功能。您可以参考这个代码来实现您自己的Qt项目日志系统。 首先,在您的Qt项目中添加spdlog库的头文件和源文件。可以将spdlog的源文件直接放到您的项目文件夹中,然后在.pro文件中添加相应的路径。 ```pro INCLUDEPATH += $$PWD/spdlog/include SOURCES += $$PWD/spdlog/src/spdlog.cpp ``` 接下来,创建一个Logger类,封装spdlog库的接口函数,用于记录日志信息。 logger.h ```c++ #ifndef LOGGER_H #define LOGGER_H #include <memory> #include "spdlog/spdlog.h" class Logger { public: static Logger& instance(); std::shared_ptr<spdlog::logger> get_console_logger(const std::string& name); std::shared_ptr<spdlog::logger> get_file_logger(const std::string& name, const std::string& filename); std::shared_ptr<spdlog::logger> get_rotating_file_logger(const std::string& name, const std::string& filename, size_t max_size, size_t max_files); std::shared_ptr<spdlog::logger> get_daily_file_logger(const std::string& name, const std::string& filename, int hour, int minute); std::shared_ptr<spdlog::logger> get_compressed_file_logger(const std::string& name, const std::string& filename, size_t max_size, size_t max_files); private: Logger(); }; #endif // LOGGER_H ``` logger.cpp ```c++ #include "logger.h" #include "spdlog/sinks/basic_file_sink.h" #include "spdlog/sinks/rotating_file_sink.h" #include "spdlog/sinks/daily_file_sink.h" #include "spdlog/sinks/compressed_file_sink.h" Logger::Logger() { // 初始化spdlog库 spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%l%$] [thread %t] %v"); // 如果需要输出到控制台,请取消下面这行代码的注释 //auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>(); //spdlog::default_logger()->sinks().push_back(console_sink); } Logger& Logger::instance() { static Logger logger; return logger; } std::shared_ptr<spdlog::logger> Logger::get_console_logger(const std::string& name) { return spdlog::stdout_color_mt(name); } std::shared_ptr<spdlog::logger> Logger::get_file_logger(const std::string& name, const std::string& filename) { return spdlog::basic_logger_mt(name, filename); } std::shared_ptr<spdlog::logger> Logger::get_rotating_file_logger(const std::string& name, const std::string& filename, size_t max_size, size_t max_files) { return spdlog::rotating_logger_mt(name, filename, max_size, max_files); } std::shared_ptr<spdlog::logger> Logger::get_daily_file_logger(const std::string& name, const std::string& filename, int hour, int minute) { return spdlog::daily_logger_mt(name, filename, hour, minute); } std::shared_ptr<spdlog::logger> Logger::get_compressed_file_logger(const std::string& name, const std::string& filename, size_t max_size, size_t max_files) { return spdlog::rotating_logger_mt<spdlog::sinks::compressed_file_sink_st>(name, filename, max_size, max_files); } ``` 最后,在您的Qt项目使用Logger类来记录日志信息。 ```c++ #include "mainwindow.h" #include "ui_mainwindow.h" #include "logger.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // 获取控制台日志器 auto console_logger = Logger::instance().get_console_logger("console"); // 获取文件日志器,使用基本文件记录器 auto file_logger = Logger::instance().get_file_logger("file", "example.log"); // 获取文件日志器,使用按大小轮转的文件记录器 auto rotating_file_logger = Logger::instance().get_rotating_file_logger("rotating_file", "example.rotating", 1024 * 1024 * 5, 3); // 获取文件日志器,使用按日期轮转的文件记录器 auto daily_file_logger = Logger::instance().get_daily_file_logger("daily_file", "example.%Y-%m-%d.log", 0, 0); // 获取文件日志器,使用压缩文件记录器 auto compressed_file_logger = Logger::instance().get_compressed_file_logger("compressed_file", "example.gz", 1024 * 1024 * 5, 3); // 输出带有颜色的信息 console_logger->info("\033[0;32mThis is a green message!\033[0m"); console_logger->warn("\033[0;33mThis is a yellow warning!\033[0m"); console_logger->error("\033[0;31mThis is a red error!\033[0m"); // 记录日志信息到文件 file_logger->info("This is a file message!"); rotating_file_logger->info("This is a rotating file message!"); daily_file_logger->info("This is a daily file message!"); compressed_file_logger->info("This is a compressed file message!"); } MainWindow::~MainWindow() { delete ui; } ``` 上述代码演示了如何在Qt项目使用Logger类来记录日志信息,并使用不同的记录器实现文件日志的按大小轮转、按日期轮转、压缩等功能。在输出日志信息时,使用颜色标志符将不同级别的日志信息区分开来。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值