#include "SpdLog.h" #include #include #include "spdlog/spdlog.h" #include "spdlog/sinks/rotating_file_sink.h" static std::shared_ptr logHander_; static void LogMessageOutput(QtMsgType type, const QMessageLogContext& context, const QString& msg) { if (!logHander_) { return; } switch (type) { case QtDebugMsg: logHander_->debug(msg.toStdString()); break; case QtInfoMsg: logHander_->info(msg.toStdString()); break; case QtWarningMsg: logHander_->warn(msg.toStdString()); break; case QtCriticalMsg: logHander_->critical(msg.toStdString()); break; case QtFatalMsg: logHander_->critical(msg.toStdString()); break; } } void InitSpdlog(const std::string &logger_name, const std::string &filename, int flush) { constexpr std::size_t max_size = 1024 * 1024 * 5; constexpr std::size_t max_files = 3; logHander_ = spdlog::rotating_logger_mt(logger_name, filename, max_size, max_files); logHander_->set_level(spdlog::level::debug); if (flush > 0) { spdlog::flush_every(std::chrono::seconds(flush)); } logHander_->info("main enter"); qInstallMessageHandler(LogMessageOutput); } void UninitSpdlog() { logHander_->info("main exit"); spdlog::drop_all(); }