新建项目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)的文件如下:

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

  1. Qt中与文件目录相关操作

    一.与文件目录操作有关操作. Qt中与文件目录相关的操作在QDir中,需加入#include <QDir>语句. QDir::drives()是列出电脑根目录下的所有目录,返回的是QFil ...

  2. 关于qt中的tr()函数

    关于qt中的tr()函数 在论坛中漂,经常遇到有人遇到tr相关的问题.用tr的有两类人: (1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr (2)另一类人,确实是出于国际化的 ...

  3. 第4.3节 Python中与迭代相关的函数

    下面要介绍的enumerate.range.zip.reversed.sorted属于Python内置的函数或者类别,返回的对象都可通过迭代方法访问. 一.    enumerate函数 1.     ...

  4. QT中布局器的addStretch函数使用效果

    QBoxLayout中addStretch 函数说明: void QBoxLayout::addStretch(int stretch = 0) Adds a stretchable space (a ...

  5. 关于Qt中使用线程的时候函数具体在哪个线程中运行的问题

    在子线程中,run函数中以及其中调用的都在单独的子线程里面运行,但是其他的类似构造函数之流都是在主线程里面运行的,不要搞混了

  6. 5.QT中关于HTTPClient相关的操作,Json数据传输

     新建项目T12HttpClient T12HttpClient.pro SOURCES += \ main.cpp QT += network CONFIG += C++11 main.cpp ...

  7. PyQt学习随笔:Qt中Model/View相关的主要类及继承关系

    View相关类类继承关系: Model相关类类继承关系:

  8. C#中Byte转换相关的函数

    1.将一个对象转换为byte对象 public static byte GetByte(object o) { ; if (o != null) { byte tmp; if (byte.TryPar ...

  9. 关于QT中evaluateJavaScript()函数返回值的处理问题

    关于QT中evaluateJavaScript()函数返回值的处理问题 - 寒风问雪的专栏 - 博客频道 - CSDN.NET 关于QT中evaluateJavaScript()函数返回值的处理问题 ...

随机推荐

  1. 2015 多校联赛 ——HDU5353(构造)

    Each soda has some candies in their hand. And they want to make the number of candies the same by do ...

  2. [Noi2014]购票

    来自FallDream 的博客,未经允许,请勿转载,谢谢. 今年夏天,NOI在SZ市迎来了她30周岁的生日.来自全国 n 个城市的OIer们都会从各地出发,到SZ市参加这次盛会.        全国的 ...

  3. [APIO2014]

    T1.回文树裸题. #include<cstdio> #include<iostream> #define ll long long using namespace std; ...

  4. Gethub readme 撰写

    大标题=== 小标题----- #一级标题 ##二级标题 ###三级标题 ####四级标题 #####五级标题 ######六级标题 插入圆点* 昵称:果冻虾仁 * 别名:隔壁老王 * 英文名:Jel ...

  5. text-size-adjust: none并没有什么用

    在样式文件中添加text-size-adjust: none,并没有什么用,移动端浏览器自动调整字体大小还是在进行,webkit已取消对其支持,移动端避免浏览器因为横屏.竖屏模式自动缩放字体大小可以加 ...

  6. 利用Express和ejs编写简单页面

    1.创建临时文件夹ejsdemo $ mkdir ejsdemo 2.进入ejsdemo 初始化项目 $ npm init 3.安装express $ npm install express --sa ...

  7. 使用translate将字符串中的数字提取出来

    --方法1: with tmp as ( select '按时的撒旦123元(其中含存款11元)' name from dual union all select '一类似的预存9600元(新势力)' ...

  8. Codeforces Round #305 (Div. 2) B. Mike and Fun 暴力

     B. Mike and Fun Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/548/pro ...

  9. Node.js TLS/SSL

    Stability: 3 - Stable 可以使用 require('tls') 来访问这个模块. tls 模块 使用 OpenSSL 来提供传输层(Transport Layer)安全性和(或)安 ...

  10. Go 语言接口

    Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口. 实例 /* 定义接口 */ type interface_name in ...