代码拉取完成,页面将自动刷新
#include "loggerfactory.h"
#include <QCoreApplication>
#include <QDir>
#include <QDateTime>
#include <QFile>
#include <QDebug>
#include <mutex>
#include <iostream>
using namespace std;
stream::LogRank LoggerFactory::log_rank_ = stream::DEBUG;
string LoggerFactory::log_path_ = "log/";
static void OutputMessage(QtMsgType type, const QMessageLogContext &ctx, const QString &msg)
{
QString txt;
txt
.append(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"))
.append(" [").append(ctx.function).append(":").append(to_string(ctx.line).c_str()).append("]");
stream::LogRank curr_log_rank;
switch (type)
{
case QtDebugMsg:
txt.append(" DEBUG ");
curr_log_rank = stream::LogRank::DEBUG;
break;
case QtInfoMsg:
txt.append(" INFO ");
curr_log_rank = stream::LogRank::INFO;
break;
case QtWarningMsg:
txt.append(" WQRNING ");
curr_log_rank = stream::LogRank::WARNING;
break;
case QtCriticalMsg:
txt.append(" CRITICAL ");
curr_log_rank = stream::LogRank::CRITIAL;
break;
case QtFatalMsg:
txt.append(" FATAL ");
curr_log_rank = stream::LogRank::FATAL;
break;
}
if(curr_log_rank >= LoggerFactory::log_rank_)
{
QString log_path(LoggerFactory::log_path_.c_str());
if(!log_path.startsWith("/"))
{
log_path = QCoreApplication::applicationDirPath() + "/" + log_path;
}
if(!log_path.endsWith("/"))
{
log_path.append("/");
}
QDir dir(log_path);
if(!dir.exists())
{
dir.mkdir(log_path);
}
QString filename = log_path + "log." + QDateTime::currentDateTime().toString("yyyy-MM-dd") + ".txt";
QFile log_file(filename);
static mutex mtx;
mtx.lock();
if(log_file.open(QIODevice::WriteOnly | QIODevice::Append))
{
QTextStream stream(&log_file);
stream << txt << msg << endl;
log_file.close();
}
mtx.unlock();
cout << txt.toStdString() << msg.toStdString() << endl;
}
}
void LoggerFactory::Init(stream::LogRank log_rank)
{
LoggerFactory::log_rank_ = log_rank;
qInstallMessageHandler(OutputMessage);
}
LoggerFactory::LoggerFactory()
{
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。