禁用QML console.log()消息

时间:2015-11-19 10:42:27

标签: javascript qt qml

我们正在调整应用程序的最终版本,并且我们在c ++中成功禁用了调试消息。

CONFIG(release, debug|release):{
    message(Building in release mode. We deactivate the logs.)
    DEFINES += QT_NO_DEBUG_OUTPUT
} else {
    message(Building in debug mode.)
}

但是,我们的QML javascript console.log()函数仍在记录信息。

我还发现this source明确指出: 使用C ++中的qDebug,qWarning,qCritical方法生成输出(另请参阅调试技术)。

对我来说什么都没有多大意义,因为我已经忽略了所有的qDebugs()

所以,问题是: 如何忽略所有console.log()?

我认为这应该是一项简单的任务,类似于qDebug()消息。

如需了解更多信息,请发表评论。

注意:我知道该链接适用于Qt 5.,但我使用的是Qt 4.8。

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果$(function () { var template = "<h3>Details</h3>" + "<ul>" + "<li>Submitted: <span class='submittedTime'></span></li>" + "<li>Submitted by: <span class='submitter'></span></li>" + "<li>Contact Information" + "<ul>" + "<li>Name: <span class='contactName'></span></li>" + "<li>Name: <span class='contactEmail'></span></li>" + "</ul>" + "</li>" + "</ul>"; var t = $(template); //console.log(t); $(t).appendTo(".test"); }); 成功禁用Qt代码中的输出,则应对实现QT_NO_DEBUG_OUTPUT的{​​{3}}执行相同操作。但是,我认为这些功能宏是故意不经过自动测试的(太多的宏,太少的硬件资源无法测试它们),因此任何错误报告都会被关闭,并且您可能会被鼓励自己提交补丁

另一种解决方案可能是使用C++ functions,如qInstallMessageHandler()问题的答案所述。

不幸的是,这对您没有帮助,但在第5版中,它足以使用this环境变量禁用logging rule

console.log()

答案 1 :(得分:0)

这是我用于最终版本的内容:

qputenv("QT_LOGGING_RULES", QByteArray("*.debug=false;qml=false"));