Qt输出打印信息的日志到文件两种方式
效果:
1、利用ofstream文件写操作,将内存数据写入存储文件。
找到main.cpp:
①、增加头文件引用:
②、增加全局变量:
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); // F文件信息L行数
-
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"; // std::ofstream
-
// 解锁
-
mutex.unlock();
-
}
学习Qt开发不知道做什么?UP主为大家整理的这些领域都涉及到Qt开发:嵌入式领域、桌面端开发、移动端、微控制器MCU、客户端(游戏、直播等等)、汽车领域行业、 消费类电子设备、医疗领域行业、工业自动化领域等等
Qt框架,GUI应用程序,跨平台开发,信号与槽机制,QML语言,模型视图编程,多线程编程,数据库编程,网络编程,XML解析,JSON解析,图形图像处理,用户界面设计,动画效果,OpenGL,WebKit,嵌入式开发,客户端/服务器应用程序.自定义控件
Qt框架,GUI应用程序,跨平台开发,信号与槽机制,QML语言,模型视图编程,多线程编程,数据库编程,网络编程,XML解析,JSON解析,图形图像处理,用户界面设计,动画效果,OpenGL,WebKit,嵌入式开发,客户端/服务器应用程序.自定义控件QT6,C 语言基础,qt基础编程,qt软件开发,Qt架构设计,qt布局管理器,qt嵌入式开发,qt编程入门,qt数据库编程,qt跨平台框架,QT项目实战,Quick模块,OpenCV,Qt实战,OpenCV教程,QT界面开发,Qt框架,C 数据结构,Qt线程,桌面应用开发,qt桌面应用开发,Socket网络编程,qt开发工程师,qt开发,应用程序开发框架,图形视图框架,数据库编程,Qt开发编程,Qt开发控件,Qt开发工程师,QT开发必备技能栈,qt编码,qt网络编程,qt网络通信,Qt信号,Qt槽机制,qt字符串,qt数据类型,qt容器,qt客户端开发,qt软件工程师,qt页面绘制
学习Qt开发不知道做什么?UP主为大家整理的这些领域都涉及到Qt开发:嵌入式领域、桌面端开发、移动端、微控制器MCU、客户端(游戏、直播等等)、汽车领域行业、 消费类电子设备、医疗领域行业、工业自动化领域等等
Qt框架,GUI应用程序,跨平台开发,信号与槽机制,QML语言,模型视图编程,多线程编程,数据库编程,网络编程,XML解析,JSON解析,图形图像处理,用户界面设计,动画效果,OpenGL,WebKit,嵌入式开发,客户端/服务器应用程序.自定义控件
Qt框架,GUI应用程序,跨平台开发,信号与槽机制,QML语言,模型视图编程,多线程编程,数据库编程,网络编程,XML解析,JSON解析,图形图像处理,用户界面设计,动画效果,OpenGL,WebKit,嵌入式开发,客户端/服务器应用程序.自定义控件QT6,C 语言基础,qt基础编程,qt软件开发,Qt架构设计,qt布局管理器,qt嵌入式开发,qt编程入门,qt数据库编程,qt跨平台框架,QT项目实战,Quick模块,OpenCV,Qt实战,OpenCV教程,QT界面开发,Qt框架,C 数据结构,Qt线程,桌面应用开发,qt桌面应用开发,Socket网络编程,qt开发工程师,qt开发,应用程序开发框架,图形视图框架,数据库编程,Qt开发编程,Qt开发控件,Qt开发工程师,QT开发必备技能栈,qt编码,qt网络编程,qt网络通信,Qt信号,Qt槽机制,qt字符串,qt数据类型,qt容器,qt客户端开发,qt软件工程师,qt页面绘制
④、增加注册信息及记录到文件中:
-
int main(int argc, char *argv[])
-
{
-
//注册MessageHandler
-
qInstallMessageHandler(outputMessage); //注册MessageHandler
-
g_OutputDebug.open(qPrintable(QString(QString(QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss").append("-log.txt")))), std::ios::out | std::ios::trunc);
-
-
QApplication a(argc, argv);
-
MainWindow w;
-
w.show();
-
return a.exec();
-
}
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C 语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
2、利用QFile记录文件
-
①、增加头文件引用:
-
-
-
-
②、定义函数:
-
void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
-
{
-
// 加锁
-
static QMutex mutex;
-
mutex.lock();
-
QByteArray localMsg = msg.toLocal8Bit();
-
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("F2:(%1) L:(%2)").arg(QString(context.file)).arg(context.line); // F文件L行数
-
QString strDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
-
QString strMessage = QString("%1 %2 \t%3 \t%4").arg(text).arg(context_info).arg(strDateTime).arg(msg);
-
// 输出信息至文件中(读写、追加形式)
-
QFile file(CODE_SYSTEM_BACKER_PATH QString(QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss").append("-log.txt")));
-
file.open(QIODevice::ReadWrite | QIODevice::Append);
-
QTextStream stream(&file);
-
stream << strMessage << "\r\n";
-
file.flush();
-
file.close();
-
// 解锁
-
mutex.unlock();
-
}
学习Qt开发不知道做什么?UP主为大家整理的这些领域都涉及到Qt开发:嵌入式领域、桌面端开发、移动端、微控制器MCU、客户端(游戏、直播等等)、汽车领域行业、 消费类电子设备、医疗领域行业、工业自动化领域等等
Qt框架,GUI应用程序,跨平台开发,信号与槽机制,QML语言,模型视图编程,多线程编程,数据库编程,网络编程,XML解析,JSON解析,图形图像处理,用户界面设计,动画效果,OpenGL,WebKit,嵌入式开发,客户端/服务器应用程序.自定义控件
Qt框架,GUI应用程序,跨平台开发,信号与槽机制,QML语言,模型视图编程,多线程编程,数据库编程,网络编程,XML解析,JSON解析,图形图像处理,用户界面设计,动画效果,OpenGL,WebKit,嵌入式开发,客户端/服务器应用程序.自定义控件QT6,C 语言基础,qt基础编程,qt软件开发,Qt架构设计,qt布局管理器,qt嵌入式开发,qt编程入门,qt数据库编程,qt跨平台框架,QT项目实战,Quick模块,OpenCV,Qt实战,OpenCV教程,QT界面开发,Qt框架,C 数据结构,Qt线程,桌面应用开发,qt桌面应用开发,Socket网络编程,qt开发工程师,qt开发,应用程序开发框架,图形视图框架,数据库编程,Qt开发编程,Qt开发控件,Qt开发工程师,QT开发必备技能栈,qt编码,qt网络编程,qt网络通信,Qt信号,Qt槽机制,qt字符串,qt数据类型,qt容器,qt客户端开发,qt软件工程师,qt页面绘制
③、增加注册信息:
-
int main(int argc, char *argv[])
-
{
-
//注册MessageHandler
-
qInstallMessageHandler(outputMessage); //注册MessageHandler
-
-
QApplication a(argc, argv);
-
MainWindow w;
-
w.show();
-
return a.exec();
-
}
这样,我们就得到了输出日志了。(注:Release版本稍许有些不同,需要引用DEFINES = QT_MESSAGELOGCONTEXT到Pro中)
本文福利,莬费领取Qt开发学习资料包、技术视频,内容包括(C 语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgcabkf
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13