• 8184阅读
  • 5回复

如何将qdebug信息输出到文件中去? [复制链接]

上一主题 下一主题
离线jerrycwj
 

只看楼主 倒序阅读 楼主  发表于: 2007-04-26
如何将qdebug信息输出到文件中去?
— 本帖被 XChinux 执行加亮操作(2008-06-29) —
想改造一下某个程序,把其中的qdebug信息输出到以每天日期命名的log文件里面去,请问应该如何实现?
谢谢
[ 此贴被XChinux在2008-07-19 20:36重新编辑 ]
离线htyoung

只看该作者 1楼 发表于: 2007-04-26
我写过一个类似的 但是不是用qDebug,函数如下,它将log存到一个debug.txt
详细的使用,可以看一下

Qt中文论坛 » Qt 个人作品展示(Qt Personal Product Show.) » 自己写的一个秒表和世界时间表

http://www.qtcn.org/bbs/read.php?tid=7709

请看一下这些在 ydefine.h,ydefine.cpp中定义的函数。
这些函数并不强大,但简单应用是够用了。

FILE *g_stream; //this a flobal value

bool openFileStream()

bool closeFileStream()

void debugInfos(const char *name, int value)

void debugInfos(const char *name)

如何应用:
首先先在 class的构造函数中用bool openFileStream() 打开g_stream

然后就可以在程序的任意地方使用:
debugInfos(" text viewsname >1 is OK \n");

最后在class的析构函数里 bool closeFileStream()



另外,一个小建议,为了你的可移植性,不要直接用qDebug函数,
最好重定义一下。如
#define  yDebug  qDebug
这样你在用时 就会用yDebug代替,如果你下次想用别的debug函数,你就只需要在一个地方改 ,而不是全文改了。
[ 此贴被htyoung在2007-04-26 10:41重新编辑 ]
***
QT5
***
离线jerrycwj

只看该作者 2楼 发表于: 2007-04-26
因为这是一个比较古老的项目
已经很难再去做什么大的改动
这次只是紧急需要输出log来跟踪bug
无奈只能出此下策啊
离线myer

只看该作者 3楼 发表于: 2007-04-26
void myMessageOutput( QtMsgType type, const char *msg )
{
    switch ( type ) {
        case QtDebugMsg:
            //写入文件;
            break;
        case QtWarningMsg:
            break;
        case QtFatalMsg:
            abort();
    }
}

int main( int argc, char** argv )
{
    QApplication app( argc, argv );

    qInstallMsgHandler( myMessageOutput );

    ......

    return app.exec();
}
http://user.qzone.qq.com/56430808
离线myer

只看该作者 4楼 发表于: 2007-04-26
qDebug(), qWarning(), qFatal()分别对应以上三种type。
http://user.qzone.qq.com/56430808
离线jerrycwj

只看该作者 5楼 发表于: 2007-04-29
已实现
谢谢
快速回复
限100 字节
 
上一个 下一个