2015-11-19 23 views
3

我們tunning我們的應用程序的最終版本中,我們成功地禁用C++中的調試消息。禁用QML的console.log()消息

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即明確指出: 輸出使用所述qDebug,qWarning,qCritical方法在C++中(也參見調試技術)生成。

犯規做出什麼太大的意義對我來說,因爲即時通訊已經忽略所有的qDebugs()

所以,問題是: 如何忽略所有的console.log()?

我只是覺得這應該是一件容易的事,類似qDebug()消息。

對於任何進一步的信息,請發表評論。

注:我知道鏈接指向的Qt 5,但使用Qt 4.8 IM。

在此先感謝!

+0

您可以嘗試使用此http://計算器。 com/questions/1215392 /如何快速和方便地禁用所有控制檯日誌語句在我的代碼禁用console.log() – demonplus

+0

我看到了這篇文章,但我認爲正在使用很多資源應該很容易實現。據我所知,與QT_NO_DEBUG_OUTPUT Im相當肯定它確實刪除代碼,因爲我的應用程序的大小減小。我期待着任何類似的宏。不管怎麼說,還是要謝謝你! :) –

回答

1

如果QT_NO_DEBUG_OUTPUT已成功禁用Qt代碼中的輸出,它應該對實現console.log()C++ functions執行相同的操作。但是,我認爲,這些特徵宏是故意不自動測試(過多的宏,太少的硬件資源,以測試他們的),所以任何錯誤報告將被關閉,你會鼓勵自己提交補丁。

另一個解決方案可能是使用qInstallMessageHandler(),如this問題的答案中所述。


不幸的是這並不能幫助你,但Qt中5,這是足以與QT_LOGGING_RULES環境變量來禁用logging rule

QT_LOGGING_RULES=qml=false 
+0

嗨!這是我可能的解決方案之一。我已經成功地進行了測試,並且我知道它可以正常工作,但正如我之前所說的,我認爲正在使用許多資源(最後是調用其他函數的函數)。我期待一個將禁用/刪除註釋爲QT_NO_DEBUG_OUTPUT的宏。我會等待看看其他答案是否提供更多信息,如果不是,我會接受這個答案。 +1爲qt項目如何處理的深入解釋。 –