void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
static QMutex mutex;
mutex.lock();
QString text;
switch((int)type)
{
case QtDebugMsg:
text = QString("Debug:");
break;
case QtWarningMsg:
text = QString("Warning:");
break;
case QtCriticalMsg:
text = QString("Critical:");
break;
case QtFatalMsg:
text = QString("Fatal:");
}
QString contextInfo = QString("\"%1(%2)\"").arg(QString(context.file)).arg(context.line);
QString currentTime = QTime::currentTime().toString("hh:mm:ss.zzz");
QString message = QString("[%1%2-%3]:%4").arg(text).arg(currentTime).arg(contextInfo).arg(msg);
QFile file(QString("./%1.txt").arg(QDate::currentDate().toString("yyyy-MM-dd")));
file.open(QIODevice::WriteOnly | QIODevice::Append);
QTextStream text_stream(&file);
text_stream << message << "\r\n";
file.flush();
file.close();
mutex.unlock();
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qInstallMessageHandler(myMessageOutput);
qDebug() <<"日志内容";
return a.exec();
}
日志打印出格式为:
- [Debug:10:47:36.993-"…/40RDataTransfer/sendthread24003.cpp(15)"]:日志内容
日志文件保存在可执行程序同级目录中,以当日日期.txt为文件名。其中”]:“后的内容是使用qDebug() 打印的内容。
|