50 lines
1.3 KiB
C++
50 lines
1.3 KiB
C++
|
#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();
|
||
|
}
|