culturered_client/Common/SpdLog.cpp

50 lines
1.3 KiB
C++
Raw Permalink Normal View History

2024-09-07 03:34:44 +00:00
#include "SpdLog.h"
#include <chrono>
#include <QApplication>
#include "spdlog/spdlog.h"
#include "spdlog/sinks/rotating_file_sink.h"
static std::shared_ptr<spdlog::logger> 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();
}