Qt日志输出到文件
#include <QApplication>
#include <QLibraryInfo>
#include "mainwindow.h"
#include <QDateTime>
#include <QDebug>
#include <fstream>
std::ofstream g_OutputDebug;
void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
static QMutex mutex;
mutex.lock();
QString text;
switch(type) {
case QtDebugMsg:
text = QString("Debug: ");
break;
case QtWarningMsg:
text = QString("Warning: ");
break;
case QtCriticalMsg:
text = QString("Critical:");
break;
case QtFatalMsg:
text = QString("Fatal: ");
break;
default:
text = QString("Debug: ");
}
QString context_info = QString("F:(%1) L:(%2)").arg(QString(context.file)).arg(context.line);
QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
QString current_date = QString("(%1)").arg(current_date_time);
std::string message = qPrintable(QString("%1 %2 \t%3 \t%4").arg(text).arg(context_info).arg(current_date).arg(msg));
g_OutputDebug << message << "\r\n";
mutex.unlock();
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Q_UNUSED( argc );
Q_UNUSED( argv );
QString strDir = QCoreApplication::applicationDirPath()+"/Log/";
QDir dir(strDir);
if(!dir.exists())
{
dir.mkdir(strDir);
}
qInstallMessageHandler(outputMessage);
g_OutputDebug.open(qPrintable(strDir+QString(QString(QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss").append("-log.txt")))), std::ios::out | std::ios::trunc);
MainWindow w;
a.connect(&a,SIGNAL(lastWindowClosed()),&a,SLOT(qiut()));
w.setAttribute(Qt::WA_QuitOnClose,true);
w.setWindowTitle(QString::fromLocal8Bit("中断缺陷检测"));
w.show();
return a.exec();
}