QT qDebug输出自带输出的代码位置
运用结果展示
"[ 1970-01-01 00:21:30:594 ]: Debug:\topen com \"/dev/ttySAC1\" success! (file:../LSC_manipulator_application/serial_communication/serial_main.cpp, line:80, func: void serial_main::open_serial(QSerialPort*, QString))"
pro文件加入
DEFINES += QT_MESSAGELOGCONTEXT
mian.cpp文件加入
void myMsgOutput(QtMsgType type, const QMessageLogContext &context, const QString& msg)
{
static QMutex mutex1;
mutex1.lock();
QString time=QDateTime::currentDateTime().toString(QString("[ yyyy-MM-dd HH:mm:ss:zzz ]"));
QString mmsg;
switch(type)
{
case QtDebugMsg:
mmsg=QString("%1: Debug:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg.toUtf8().data()).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
break;
case QtInfoMsg:
mmsg=QString("%1: Info:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg.toUtf8().data()).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
break;
case QtWarningMsg:
mmsg=QString("%1: Warning:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg.toUtf8().data()).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
break;
case QtCriticalMsg:
mmsg=QString("%1: Critical:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg.toUtf8().data()).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
break;
case QtFatalMsg:
mmsg=QString("%1: Fatal:\t%2 (file:%3, line:%4, func: %5)").arg(time).arg(msg.toUtf8().data()).arg(QString(context.file)).arg(context.line).arg(QString(context.function));
abort();
}
QFile file("/opt/LSC_manipulator_application/debug_data/debug.txt");
file.open(QIODevice::ReadWrite | QIODevice::Append);
QTextStream stream(&file);
stream << mmsg << "\r\n";
qDebug()<<mmsg;
file.flush();
file.close();
mutex1.unlock();
}