【问题标题】:qDebug Console output with Timestamp带有时间戳的 qDebug 控制台输出
【发布时间】:2014-12-04 09:55:35
【问题描述】:

我写了一个qt小控制台实用程序来测试数据库的连通性,代码块是:

db.setHostName("hostIP");    
db.setDatabaseName("name");    
db.setUserName("uid");    
db.setPassword("pw");    
db.setPort(1521);

while(true)
{
    if (db.open())
    {
        qDebug()<<"OPEN";
        db.close();
    }
    else
    {
        qDebug()<<"YOU MESSED UP "<<db.lastError().text();
    }
}

可以在控制台输出中看到数据库关闭或无法连接时的控制台输出,我想要的也是 tee 时间戳。

有没有办法在控制台上打印事件时间戳以及 qDebug 消息???

【问题讨论】:

    标签: c++ qt qt4 timestamp database-connection


    【解决方案1】:

    您可以安装消息处理程序并在每条消息之前打印出时间戳。请参阅qInstallMessageHandler 的文档。 使用此解决方案,您不必在每次调用 qDebug() 时添加 QTimer::currentTime()

    【讨论】:

    • 有什么方法可以在 Qt 4.8 中做类似的事情吗?
    【解决方案2】:

    当然可以。为此,您可以使用 QTime 类,即:

    qDebug() << QTime::currentTime().toString() << "YOU MESSED UP "<< db.lastError().text();
    

    或者,您可以使用QDateTime::currentDateTime() 函数以同样的方式打印出日期和时间信息。

    【讨论】:

    • QTime("15:33:05") 你搞砸了“ORA-12541: TNS:no listener Unable to logon” 谢谢,它解决了这个问题......虽然你做了一个小错字: ) 这将是 QTime。
    • @AmarjitBiswas,请查看更新后的答案。我已经改进了一点。
    【解决方案3】:

    如果你在linux上,你可以设置QT_MESSAGE_PATTERN环境变量,解释here

    QT_MESSAGE_PATTERN="[%{type}] %{appname} (%{file}:%{line}) - %{message}"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-20
      • 1970-01-01
      • 2016-01-07
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 2012-07-30
      相关资源
      最近更新 更多