Qt之qInstallMessageHandler(实践)
来源:互联网 发布:仿射变换矩阵 编辑:程序博客网 时间:2024/05/11 00:56
添加头文件:
#include <QDateTime>
#include <QFile>
#include <QTextStream>
定义输出格式:
void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
//去除qt不必要的log信息
if (msg.contains("Unknown property min-weidth") || msg.contains("content-type missing in HTTP POST")
|| msg.contains("the source rect is not contained by the pixmap's rectangle") )
{
return;
}
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:");
}
QString context_info = QString("File:(%1) Line:(%2)").arg(QString(context.file)).arg(context.line);
QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");
QString current_date = QString("(%1)").arg(current_date_time);
QString message = QString("%1 %2 %3 %4").arg(current_date).arg(text).arg(context_info).arg(msg);
QString logFile = QCoreApplication::applicationDirPath() + "/log.txt";
QFile file(logFile);
file.open(QIODevice::WriteOnly | QIODevice::Append);
if (file.size() >= 10 * 1024 * 1024) //文件达到10M后先备份再清空
{
QFile::remove("log_00.txt");//删除原来的备份文件
file.copy("log_00.txt"); //拷贝文件至备份文件
file.resize(0); //清空文件内容
}
QTextStream text_stream(&file);
text_stream << message << "\r\n";
file.flush();
file.close();
mutex.unlock();
}
注册MessageHandler:
int main()
{
//注册MessageHandler
qInstallMessageHandler(outputMessage);
}
打印日志会不会影响程序运行的流畅性??会不会带来卡的感觉??
debug release 都会有打印信息,ms级打印,时效性是够用的(想一些QT本身开发时,打印调试信息的实效就好理解了)
没法添加新的QtMsgType,灵活性不够
#include <QDateTime>
#include <QFile>
#include <QTextStream>
定义输出格式:
void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
//去除qt不必要的log信息
if (msg.contains("Unknown property min-weidth") || msg.contains("content-type missing in HTTP POST")
|| msg.contains("the source rect is not contained by the pixmap's rectangle") )
{
return;
}
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:");
}
QString context_info = QString("File:(%1) Line:(%2)").arg(QString(context.file)).arg(context.line);
QString current_date_time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss ddd");
QString current_date = QString("(%1)").arg(current_date_time);
QString message = QString("%1 %2 %3 %4").arg(current_date).arg(text).arg(context_info).arg(msg);
QString logFile = QCoreApplication::applicationDirPath() + "/log.txt";
QFile file(logFile);
file.open(QIODevice::WriteOnly | QIODevice::Append);
if (file.size() >= 10 * 1024 * 1024) //文件达到10M后先备份再清空
{
QFile::remove("log_00.txt");//删除原来的备份文件
file.copy("log_00.txt"); //拷贝文件至备份文件
file.resize(0); //清空文件内容
}
QTextStream text_stream(&file);
text_stream << message << "\r\n";
file.flush();
file.close();
mutex.unlock();
}
注册MessageHandler:
int main()
{
//注册MessageHandler
qInstallMessageHandler(outputMessage);
}
打印日志会不会影响程序运行的流畅性??会不会带来卡的感觉??
debug release 都会有打印信息,ms级打印,时效性是够用的(想一些QT本身开发时,打印调试信息的实效就好理解了)
弊端:
这种方式,可以理解为重写了QT原本的输出格式。
没法添加新的QtMsgType,灵活性不够
0 0
- Qt之qInstallMessageHandler(实践)
- Qt之qInstallMessageHandler(输出详细日志)
- Qt之qInstallMessageHandler(输出详细日志)
- 《完美Qt》之qInstallMessageHandler
- Qt之qInstallMessageHandler(重定向至文件)
- Qt 日志输出 QMessageLogger QtMessageHandler qInstallMessageHandler()
- Qt实践之2048:
- 【Qt入门实践】Qt之哲学家问题(linux 多线程)
- 工程实践QT部分之三(移植一)
- 工程实践QT部分之四(移植2)
- QT实践
- 工程实践QT部分之二(准备工作续以及程序编写)
- 工程实践QT部分之一(准备工作)
- QT 画图实践(1)--坐标变换
- 实践之Qt在Blackfin平台的移植应用
- Windows下MinGW编译静态Qt I 之实践
- Qt Charts实践
- Qt Charts_Audio实践
- 静态网站生成器(开源项目)
- Vickate_iOS_浅说NSOperationQueue、GCD、NSThread
- 1004. 成绩排名 (20)
- iOS 中关于Copy的疑问汇总
- 【MySQL】Innodb 恢复工具介绍
- Qt之qInstallMessageHandler(实践)
- 线性代数——矩阵乘积的代码实现
- Mysql date,datetime的区别以及相互转换
- protobuf-2.5.0.tar.gz的下载与安装
- Fiddler的实践心得(七):显示请求服务器的IP地址(下)
- 抽屉效果的实现
- 阿里云开放搜索案例(opensearch )
- 背景建模算法的数学理论
- git 管理工具