You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.7 KiB
57 lines
1.7 KiB
3 days ago
|
#include "LogManager.h"
|
||
|
#include <hv/hlog.h>
|
||
|
#include <spdlog/sinks/daily_file_sink.h>
|
||
|
#include <spdlog/sinks/stdout_color_sinks.h>
|
||
|
#include <QtGlobal>
|
||
|
|
||
|
#define hlog_disable() logger_set_level(hlog, LOG_LEVEL_SILENT);
|
||
|
|
||
|
LogManager::LogManager()
|
||
|
{
|
||
|
hlog_disable();
|
||
|
}
|
||
|
|
||
|
void LogManager::init()
|
||
|
{
|
||
|
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
|
||
|
console_sink->set_level(spdlog::level::warn);
|
||
|
console_sink->set_pattern("[multi_sink_example] [%^%l%$] %v");
|
||
|
|
||
|
_logger = QSharedPointer<spdlog::logger>(new spdlog::logger("logger", {console_sink}));
|
||
|
|
||
|
qInstallMessageHandler(LogManager::messageHandler);
|
||
|
}
|
||
|
|
||
|
void LogManager::messageHandler(QtMsgType type,
|
||
|
const QMessageLogContext &context,
|
||
|
const QString &msg)
|
||
|
{
|
||
|
// 将 QString 转换为 UTF-8 编码的 std::string
|
||
|
QByteArray byteArray = msg.toUtf8();
|
||
|
std::string utf8Msg(byteArray.constData(), byteArray.size());
|
||
|
|
||
|
switch (type) {
|
||
|
//< 这里根据自己的需求可以将qt的 不同种类输出 重定向到 自己需要的日志输出接口中
|
||
|
case QtDebugMsg: {
|
||
|
LogManager::instance()._logger->debug(utf8Msg);
|
||
|
spdlog::debug(utf8Msg);
|
||
|
} break;
|
||
|
case QtInfoMsg: {
|
||
|
LogManager::instance()._logger->info(utf8Msg);
|
||
|
spdlog::info(utf8Msg);
|
||
|
} break;
|
||
|
case QtWarningMsg: {
|
||
|
LogManager::instance()._logger->warn(utf8Msg);
|
||
|
spdlog::warn(utf8Msg);
|
||
|
} break;
|
||
|
case QtCriticalMsg: {
|
||
|
LogManager::instance()._logger->critical(utf8Msg);
|
||
|
spdlog::critical(utf8Msg);
|
||
|
} break;
|
||
|
case QtFatalMsg: {
|
||
|
LogManager::instance()._logger->critical(utf8Msg);
|
||
|
spdlog::critical(utf8Msg);
|
||
|
}
|
||
|
}
|
||
|
}
|