3.QT中的debug相关的函数,以及文件锁的使用




新建项目T33Debug

main.cpp

#include
<QDebug>

#include
<QFile>

#include
<QMutex>  
//文件锁

 

void
MyMessageHandler(QtMsgType
type,const
QMessageLogContext
&context,const
QString
&msg)

{

   
//使用一个文件锁,当在写文件的时候,要等写完之后才能继续执行

   
static
QMutex
mutex;

   
mutex.lock();

 

   
QString
strContext;

   
//在QMessageLogContext中保存的有文件名,文件行号,方法等信息

   
strContext.sprintf("%s
%d
%s:\r\n\t",context.file,context.line,context.function);

 

   
QString
output
=
strContext
+
msg
+
"\r\n";

 

   
if(type
==
QtDebugMsg)

   
{

       
QFile
file("debug.log");

       
file.open(QFile::WriteOnly
|
QFile::Append);

       
file.write(output.toUtf8());

       
file.close();

   
}

   
if(type
==
QtWarningMsg)

   
{

       
QFile
file("warning.log");

       
file.open(QFile::WriteOnly|QFile::Append);

   
    file.write(output.toUtf8());

       
file.close();

   
}

   
if(type
==
QtCriticalMsg)

   
{

       
QFile
file("critical.log");

       
file.open(QFile::WriteOnly
|
QFile::Append);

       
file.write(output.toUtf8());

       
file.close();

   
}

   
if(type
==
QtFatalMsg)

   
{

       
QFile
file("fatal.log");

       
file.open(QFile::WriteOnly
|
QFile::Append);

       
file.write(output.toUtf8());

       
file.close();

   
}

 

   
printf("%s",output.toUtf8().data());

   
mutex.unlock();

}

 

int
main()

{

   
//To
suppress
the
output
at
runtime,
install
your
own
message

   
//handler
with
qInstallMessageHandler().

   
qInstallMessageHandler(MyMessageHandler);

   
qDebug()
<<
"output
debug";

   
qDebug("%s,%d","outputdebug",1);

 

   
qWarning()
<<
"warning";

   
qCritical()
<<
"cridical";

   
//可以放开下面的一句,然后发现目录也有相应的fatal.log文件

   
//qFatal("fatal
info");

}

运行结果:

输入目录(E:\QT\build-T33Debug-Desktop_Qt_5_3_MinGW_32bit-Debug)的文件如下:

 

时间: 2014-12-18
Tags: 函数, type, file, LOG, open, mutex

3.QT中的debug相关的函数,以及文件锁的使用的相关文章

C#中Byte转换相关的函数_C#教程

 1.将一个对象转换为byte对象 public static byte GetByte(object o) { byte retInt = 0; if (o != null) { byte tmp; if (byte.TryParse(o.ToString().Trim(), out tmp)) { retInt = tmp; } } return retInt; } 2.将一个十六进制字符串转换为byte对象,字符串以0x开头 public static byte GetByteFormHe

qt画点的问题?-在QT中怎么绘制cos()这个函数的曲线

问题描述 在QT中怎么绘制cos()这个函数的曲线 我要画一个曲线出来.在QT文档里面找了void QPainter::drawLine ( const QLine & line )这个函数,但是不可以,它是一确定的点来画点的.请大神们指教一下. 解决方案 http://blog.chinaunix.net/uid-24219701-id-3157288.html 解决方案二: 至于是什么函数,只要你根据x算出y就可以 解决方案三: 绘制余弦函数曲线Qt绘制贝塞尔曲线Qt- 绘制实时曲线

收集的PHP中与数组相关的函数_php技巧

从ASP初入门到PHP,感觉到PHP的强大之一就是内置函数的丰富,比如先前学习的PHP日期时间函数,读写文件的相关函数等都无不表明了PHP的更专业.更令用户的使用得心应手. 一开始我对PHP函数的丰富功能很兴奋,随着对越来越多近乎变态多的函数接触之后,突然联想到了ASP内置函数的稀少,要完成某项特殊功能,常须自定义函数,随着应用的在增多,自己居然也有了一套常用的函数库.然而现在在PHP中,这些功能早已被标准化.规范化而浓缩为内置函数直接使用,曾经的ASP开发人员成为了PHP的普通用户. 但转念一

C语言中改变目录的相关操作函数详解_C 语言

C语言fchdir()函数:改变当前工作目录头文件: #include <unistd.h> 定义函数: int fchdir(int fd); 函数说明:fchdir()用来将当前的工作目录改变成以参数fd 所指的文件描述词. 返回值:执行成功则返回 0, 失败返回-1, errno 为错误代码. 范例 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <

Qt中Ui名字空间以及setupUi函数的原理和实现

用最新的QtCreator选择GUI的应用会产生含有如下文件的工程   下面就简单分析下各部分的功能.   .pro文件是供qmake使用的文件,不是本文的重点[不过其实也很简单的],在此不多赘述. 所以呢,还是从main开始, #include <QtGui/QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWin

c++-求教QT中一个类的函数怎样才能调用另一个类的函数

问题描述 求教QT中一个类的函数怎样才能调用另一个类的函数 在fivescene.h文件中已经声明class FiveScene : public QWidget: 然后UI中的Widget也是服从这个类的调用: 我想在让mainwndow.h(头文件中已经include)负责整个界面上的按钮的操作,然后有个重新开始的按钮clicked(),我希望使得Widget界面清空: 但在实际操作中,并没有调用到FiveScene类下面的init()函数,求教应该怎么变动 (编译已通过,部分相关代码如下)

c++-qt中函数参数类型不同也能实现其功能?

问题描述 qt中函数参数类型不同也能实现其功能? 图中data为QByteArray类型,而函数原型为const char类型,broadcast为枚举类型,而函数原型为hostaddress类型.为什么不同也能够实现其功能呢? 解决方案 这里发生了隐式类型转换 QString raw_string = ""haasd123ha""; QByteArray byte_instrument = raw_string.toLocal8Bit(); const char

qt labtool-QT语言开发的LabTool项目中的setReference相关问题

问题描述 QT语言开发的LabTool项目中的setReference相关问题 QT语言开发的LabTool项目中,每次校准波形,让波形显示在屏幕中间的时候,触发点的红线都会在不同的地方跳动,这和setReference方法中的mRefTime值有怎样的关系? 解决方案 QT的中文化相关问题qt 数据库连接相关问题QT项目中的相关知识

[Qt教程] 第29篇 XML(三)Qt中的SAX

[Qt教程] 第29篇 XML(三)Qt中的SAX 楼主  发表于 2013-5-21 22:27:59 | 查看: 615| 回复: 5 Qt中的SAX 版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 导语 我们前面讲述了用DOM的方法对XML文档进行操作,DOM实现起来很灵活,但是这样也就使得编程变得复杂了些,而且我们前面也提到过,DOM需要预先把整个XML文档都读入内存,这样就使得它不适合处理较大的文件.下面我们讲述另一种读取