Behaviour of qDebug and companions starting with Qt 5.2
-
qDebug and its companions are quite powerful methods for substitution of cout and cerr in applications.
Two advatanges made it quite appealing when I have started to use probably around Qt 4.6 or even earlier.
The first advantage is that you can finally use a macro define for switching all references off.
The other is that the output may easily redirected at a central point of your application. The outpout may be split and duplicated what ever the programmer decides with respect to output seem possible.Therefore, I started to use qDebug already using it as some type of logging feature before it became an official part of Qt 5.2 with QLogging.
Currently, I am using Qt5.3 and the functionality is still the same with my applications after adaption of the slight changes with the message output handler.
However, one point bothers a bit. That is that the current implementation in Qt 5.3 reinterprets all qDebug statements through a macro in qlogging.h
/*
qDebug, qWarning, qCritical, qFatal are redefined to automatically include context information
*/
#define qDebug QMessageLogger(_
FILE_
,_
LINE_
, Q_FUNC_INFO).debug
#define qWarning QMessageLogger(_
FILE_
,_
LINE_
, Q_FUNC_INFO).warning
#define qCritical QMessageLogger(_
FILE_
,_
LINE_
, Q_FUNC_INFO).critical
#define qFatal QMessageLogger(_
FILE_
,_
LINE_
, Q_FUNC_INFO).fatalThe issue is the
_
FILE_
and_
LINE_
in those defines. They pepper the release exe with references to the source code files. In turn that is not what one really anticipates with a release build.Is there already a better way of handling anticipated?
Or do we need to overwrite those defines individually in our code files?