首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT QDebug与QIODevice不工作

QT QDebug与QIODevice不工作
EN

Stack Overflow用户
提问于 2013-09-29 08:22:38
回答 1查看 567关注 0票数 0

我希望我的QT应用程序将某些日志存储在不同的文件中。我一直在使用qDebug() << "LOG Messages"输出信息。这种方法的问题是,即使是线程,所有的输出都会出现在同一个屏幕上。QDebug类文档,我可以创建一个QDebug(QIODevice * dev),将任何QIODEvice作为存储数据的设备。因此,我编写了以下代码,但它不起作用:

代码语言:javascript
复制
QString logfilePath = "/var/log/1.log";
QFile * logfile = new QFile(logfilePath);
if(!logfile->open(QIODevice::WriteOnly|QIODevice::Append)){
    // There is an error
}else{
    QDebug * logger = new QDebug(logfile);
    *logger << "msg";
}

文件是创建的,但文件中没有存储任何信息。我甚至检查了QDebug代码,看起来它在QIODevice上创建了一个文本流。那么为什么没有输出存储在文件中呢?

我还知道qMessageInstaller函数。但是它不适合我,因为它是一个通用的处理程序,我希望不同的线程将日志消息存储在不同的文件中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-29 10:31:18

使用这个

代码语言:javascript
复制
*logger << "Hello!" << endl;

或者这个

代码语言:javascript
复制
*logger << "Hello!" << flush;

记住要删除记录器,这样也会刷新流。

代码语言:javascript
复制
delete logger;

确保您也在不同的线程中写入不同的文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19075912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档