Important: Please read the Qt Code of Conduct -

Preserve 'line' and 'file' macro expansion when in release mode

  • I installed my own message handler to use qDebug(), qInfo(), etc as "logging" tool. The second argument passed to the handler store the message context, such as file, function, line, thread pid, etc. They work well under debug mode, and the line and file information printed as expected. But when compiled in release mode, all line and file information are gone (the 'file' and 'line' in QMessageLogContext is 0). It seems the macro QT_NO_DEBUG prevents these infos. But I don't want to remove QT_NO_DEBUG, because I need this macro to prevent other debug macros expansion, such as Q_ASSERT(), Q_ASSERT_X(). I just need the "file", "line" or the "function" information in QMessageLogContext. Any method to achieve this?


  • Lifetime Qt Champion


    Maybe QLoggingCategory coud be of interest.

    Hope it helps

  • Add this to your .pro

    {   # active log context pour Application::ErrorMessageLog() en mode release

    Maybe you need to clear/rebuild your project.

    28-03-2018 15:32:53.285 [MultiDocsDemo from ???] error !
    28-03-2018 15:36:53.940 [MultiDocsDemo from openNewWindow() in Application.cpp line 1434] error !

  • @mpergand Yes, this is just what I want. Thanks.

Log in to reply