| Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/corelib/io/qloggingcategory.cpp |
| Source code | Switch to Preprocessed file |
| Line | Source | Count | ||||||
|---|---|---|---|---|---|---|---|---|
| 1 | /**************************************************************************** | - | ||||||
| 2 | ** | - | ||||||
| 3 | ** Copyright (C) 2015 The Qt Company Ltd. | - | ||||||
| 4 | ** Contact: http://www.qt.io/licensing/ | - | ||||||
| 5 | ** | - | ||||||
| 6 | ** This file is part of the QtCore module of the Qt Toolkit. | - | ||||||
| 7 | ** | - | ||||||
| 8 | ** $QT_BEGIN_LICENSE:LGPL21$ | - | ||||||
| 9 | ** Commercial License Usage | - | ||||||
| 10 | ** Licensees holding valid commercial Qt licenses may use this file in | - | ||||||
| 11 | ** accordance with the commercial license agreement provided with the | - | ||||||
| 12 | ** Software or, alternatively, in accordance with the terms contained in | - | ||||||
| 13 | ** a written agreement between you and The Qt Company. For licensing terms | - | ||||||
| 14 | ** and conditions see http://www.qt.io/terms-conditions. For further | - | ||||||
| 15 | ** information use the contact form at http://www.qt.io/contact-us. | - | ||||||
| 16 | ** | - | ||||||
| 17 | ** GNU Lesser General Public License Usage | - | ||||||
| 18 | ** Alternatively, this file may be used under the terms of the GNU Lesser | - | ||||||
| 19 | ** General Public License version 2.1 or version 3 as published by the Free | - | ||||||
| 20 | ** Software Foundation and appearing in the file LICENSE.LGPLv21 and | - | ||||||
| 21 | ** LICENSE.LGPLv3 included in the packaging of this file. Please review the | - | ||||||
| 22 | ** following information to ensure the GNU Lesser General Public License | - | ||||||
| 23 | ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and | - | ||||||
| 24 | ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. | - | ||||||
| 25 | ** | - | ||||||
| 26 | ** As a special exception, The Qt Company gives you certain additional | - | ||||||
| 27 | ** rights. These rights are described in The Qt Company LGPL Exception | - | ||||||
| 28 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | - | ||||||
| 29 | ** | - | ||||||
| 30 | ** $QT_END_LICENSE$ | - | ||||||
| 31 | ** | - | ||||||
| 32 | ****************************************************************************/ | - | ||||||
| 33 | - | |||||||
| 34 | #include "qloggingcategory.h" | - | ||||||
| 35 | #include "qloggingregistry_p.h" | - | ||||||
| 36 | - | |||||||
| 37 | QT_BEGIN_NAMESPACE | - | ||||||
| 38 | - | |||||||
| 39 | const char qtDefaultCategoryName[] = "default"; | - | ||||||
| 40 | - | |||||||
| 41 | Q_GLOBAL_STATIC_WITH_ARGS(QLoggingCategory, qtDefaultCategory, executed 388 times by 161 tests: end of blockExecuted by:
executed 388 times by 161 tests: guard.store(QtGlobalStatic::Destroyed);Executed by:
executed 215065 times by 159 tests: return &holder.value;Executed by:
| 0-215065 | ||||||
| 42 | (qtDefaultCategoryName)) | - | ||||||
| 43 | - | |||||||
| 44 | #ifndef Q_ATOMIC_INT8_IS_SUPPORTED | - | ||||||
| 45 | static void setBoolLane(QBasicAtomicInt *atomic, bool enable, int shift) | - | ||||||
| 46 | { | - | ||||||
| 47 | const int bit = 1 << shift; | - | ||||||
| 48 | - | |||||||
| 49 | if (enable) | - | ||||||
| 50 | atomic->fetchAndOrRelaxed(bit); | - | ||||||
| 51 | else | - | ||||||
| 52 | atomic->fetchAndAndRelaxed(~bit); | - | ||||||
| 53 | } | - | ||||||
| 54 | #endif | - | ||||||
| 55 | - | |||||||
| 56 | /*! | - | ||||||
| 57 | \class QLoggingCategory | - | ||||||
| 58 | \inmodule QtCore | - | ||||||
| 59 | \since 5.2 | - | ||||||
| 60 | - | |||||||
| 61 | \brief The QLoggingCategory class represents a category, or 'area' in the | - | ||||||
| 62 | logging infrastructure. | - | ||||||
| 63 | - | |||||||
| 64 | QLoggingCategory represents a certain logging category - identified by a | - | ||||||
| 65 | string - at runtime. A category can be configured to enable or disable | - | ||||||
| 66 | logging of messages per message type. Whether a message type is enabled or | - | ||||||
| 67 | not can be checked with the \l isDebugEnabled(), \l isInfoEnabled(), | - | ||||||
| 68 | \l isWarningEnabled(), and \l isCriticalEnabled() methods. | - | ||||||
| 69 | - | |||||||
| 70 | All objects are meant to be configured by a common registry (see also | - | ||||||
| 71 | \l{Configuring Categories}). Different objects can also represent the same | - | ||||||
| 72 | category. It is therefore not recommended to export objects across module | - | ||||||
| 73 | boundaries, nor to manipulate the objects directly, nor to inherit from | - | ||||||
| 74 | QLoggingCategory. | - | ||||||
| 75 | - | |||||||
| 76 | \section1 Creating Category Objects | - | ||||||
| 77 | - | |||||||
| 78 | The Q_DECLARE_LOGGING_CATEGORY() and Q_LOGGING_CATEGORY() macros | - | ||||||
| 79 | conveniently declare and create QLoggingCategory objects: | - | ||||||
| 80 | - | |||||||
| 81 | \snippet qloggingcategory/main.cpp 1 | - | ||||||
| 82 | - | |||||||
| 83 | \note Category names are free text. However, to allow easy configuration | - | ||||||
| 84 | of the categories using \l{Logging Rules} the names should follow some rules: | - | ||||||
| 85 | \list | - | ||||||
| 86 | \li Use letters and numbers only. | - | ||||||
| 87 | \li Further structure categories into common areas by using dots. | - | ||||||
| 88 | \li Avoid the category names \c{debug}, \c{info}, \c{warning}, and \c{critical}. | - | ||||||
| 89 | \li Category names starting with \c{qt} are reserved for Qt modules. | - | ||||||
| 90 | \endlist | - | ||||||
| 91 | - | |||||||
| 92 | \section1 Checking Category Configuration | - | ||||||
| 93 | - | |||||||
| 94 | QLoggingCategory provides \l isDebugEnabled(), \l isInfoEnabled(), | - | ||||||
| 95 | \l isWarningEnabled(), \l isCriticalEnabled(), as well as \l isEnabled() | - | ||||||
| 96 | to check whether messages for the given message type should be logged. | - | ||||||
| 97 | - | |||||||
| 98 | \note The qCDebug(), qCWarning(), qCCritical() macros prevent arguments | - | ||||||
| 99 | from being evaluated if the respective message types are not enabled for the | - | ||||||
| 100 | category, so explicit checking is not needed: | - | ||||||
| 101 | - | |||||||
| 102 | \snippet qloggingcategory/main.cpp 4 | - | ||||||
| 103 | - | |||||||
| 104 | \section1 Default Category Configuration | - | ||||||
| 105 | - | |||||||
| 106 | Both the QLoggingCategory constructor and the Q_LOGGING_CATEGORY() macro | - | ||||||
| 107 | accept an optional QtMsgType argument, which disables all message types with | - | ||||||
| 108 | a lower severity. That is, a category declared with | - | ||||||
| 109 | - | |||||||
| 110 | \snippet qloggingcategory/main.cpp 5 | - | ||||||
| 111 | - | |||||||
| 112 | will log messages of type \c QtWarningMsg, \c QtCriticalMsg, \c QtFatalMsg, but will | - | ||||||
| 113 | ignore messages of type \c QtDebugMsg and \c QtInfoMsg. | - | ||||||
| 114 | - | |||||||
| 115 | If no argument is passed, all messages will be logged. | - | ||||||
| 116 | - | |||||||
| 117 | \section1 Configuring Categories | - | ||||||
| 118 | - | |||||||
| 119 | The default configuration of categories can be overridden either by setting logging | - | ||||||
| 120 | rules, or by installing a custom filter. | - | ||||||
| 121 | - | |||||||
| 122 | \section2 Logging Rules | - | ||||||
| 123 | - | |||||||
| 124 | Logging rules allow logging for categories to be enabled or disabled in a | - | ||||||
| 125 | flexible way. Rules are specified in text, where every line must have the | - | ||||||
| 126 | format | - | ||||||
| 127 | - | |||||||
| 128 | \code | - | ||||||
| 129 | <category>[.<type>] = true|false | - | ||||||
| 130 | \endcode | - | ||||||
| 131 | - | |||||||
| 132 | \c <category> is the name of the category, potentially with \c{*} as a | - | ||||||
| 133 | wildcard symbol as the first or last character (or at both positions). | - | ||||||
| 134 | The optional \c <type> must be either \c debug, \c info, \c warning, or \c critical. | - | ||||||
| 135 | Lines that do not fit this scheme are ignored. | - | ||||||
| 136 | - | |||||||
| 137 | Rules are evaluated in text order, from first to last. That is, if two rules | - | ||||||
| 138 | apply to a category/type, the rule that comes later is applied. | - | ||||||
| 139 | - | |||||||
| 140 | Rules can be set via \l setFilterRules(). Since Qt 5.3, logging rules can also | - | ||||||
| 141 | be set in the \c QT_LOGGING_RULES environment variable, and | - | ||||||
| 142 | are automatically loaded from the \c [Rules] section of a logging | - | ||||||
| 143 | configuration file. Such configuration files are looked up in the QtProject | - | ||||||
| 144 | configuration directory, or explicitly set in a \c QT_LOGGING_CONF | - | ||||||
| 145 | environment variable: | - | ||||||
| 146 | - | |||||||
| 147 | \code | - | ||||||
| 148 | [Rules] | - | ||||||
| 149 | *.debug=false | - | ||||||
| 150 | driver.usb.debug=true | - | ||||||
| 151 | \endcode | - | ||||||
| 152 | - | |||||||
| 153 | Rules set by \l setFilterRules() take precedence over rules specified | - | ||||||
| 154 | in the QtProject configuration directory, and can, in turn, be | - | ||||||
| 155 | overwritten by rules from the configuration file specified by | - | ||||||
| 156 | \c QT_LOGGING_CONF, and rules set by \c QT_LOGGING_RULES. | - | ||||||
| 157 | - | |||||||
| 158 | - | |||||||
| 159 | Since Qt 5.6, \c QT_LOGGING_RULES may contain multiple rules separated | - | ||||||
| 160 | by semicolons: | - | ||||||
| 161 | - | |||||||
| 162 | \code | - | ||||||
| 163 | QT_LOGGING_RULES="*.debug=false;driver.usb.debug=true" | - | ||||||
| 164 | \endcode | - | ||||||
| 165 | - | |||||||
| 166 | - | |||||||
| 167 | Order of evaluation: | - | ||||||
| 168 | \list | - | ||||||
| 169 | \li [QLibraryInfo::DataPath]/qtlogging.ini | - | ||||||
| 170 | \li QtProject/qtlogging.ini | - | ||||||
| 171 | \li \l setFilterRules() | - | ||||||
| 172 | \li \c QT_LOGGING_CONF | - | ||||||
| 173 | \li \c QT_LOGGING_RULES | - | ||||||
| 174 | \endlist | - | ||||||
| 175 | - | |||||||
| 176 | The \c QtProject/qtlogging.ini file is looked up in all directories returned | - | ||||||
| 177 | by QStandardPaths::GenericConfigLocation, e.g. | - | ||||||
| 178 | - | |||||||
| 179 | \list | - | ||||||
| 180 | \li on \macos and iOS: \c ~/Library/Preferences | - | ||||||
| 181 | \li on Unix: \c ~/.config, \c /etc/xdg | - | ||||||
| 182 | \li on Windows: \c %LOCALAPPDATA%, \c %ProgramData%, | - | ||||||
| 183 | \l QCoreApplication::applicationDirPath(), | - | ||||||
| 184 | QCoreApplication::applicationDirPath() + \c "/data" | - | ||||||
| 185 | \endlist | - | ||||||
| 186 | - | |||||||
| 187 | Set the \c QT_LOGGING_DEBUG environment variable to see from where | - | ||||||
| 188 | logging rules are loaded. | - | ||||||
| 189 | - | |||||||
| 190 | \section2 Installing a Custom Filter | - | ||||||
| 191 | - | |||||||
| 192 | As a lower-level alternative to the text rules, you can also implement a | - | ||||||
| 193 | custom filter via \l installFilter(). All filter rules are ignored in this | - | ||||||
| 194 | case. | - | ||||||
| 195 | - | |||||||
| 196 | \section1 Printing the Category | - | ||||||
| 197 | - | |||||||
| 198 | Use the \c %{category} placeholder to print the category in the default | - | ||||||
| 199 | message handler: | - | ||||||
| 200 | - | |||||||
| 201 | \snippet qloggingcategory/main.cpp 3 | - | ||||||
| 202 | */ | - | ||||||
| 203 | - | |||||||
| 204 | /*! | - | ||||||
| 205 | Constructs a QLoggingCategory object with the provided \a category name. | - | ||||||
| 206 | All message types for this category are enabled by default. | - | ||||||
| 207 | - | |||||||
| 208 | If \a category is \c{0}, the category name is changed to \c "default". | - | ||||||
| 209 | */ | - | ||||||
| 210 | QLoggingCategory::QLoggingCategory(const char *category) | - | ||||||
| 211 | : d(0), | - | ||||||
| 212 | name(0) | - | ||||||
| 213 | { | - | ||||||
| 214 | init(category, QtDebugMsg); | - | ||||||
| 215 | } executed 842 times by 243 tests: end of blockExecuted by:
| 842 | ||||||
| 216 | - | |||||||
| 217 | /*! | - | ||||||
| 218 | Constructs a QLoggingCategory object with the provided \a category name, | - | ||||||
| 219 | and enables all messages with types more severe or equal than \a enableForLevel. | - | ||||||
| 220 | - | |||||||
| 221 | If \a category is \c{0}, the category name is changed to \c "default". | - | ||||||
| 222 | - | |||||||
| 223 | \since 5.4 | - | ||||||
| 224 | */ | - | ||||||
| 225 | QLoggingCategory::QLoggingCategory(const char *category, QtMsgType enableForLevel) | - | ||||||
| 226 | : d(0), | - | ||||||
| 227 | name(0) | - | ||||||
| 228 | { | - | ||||||
| 229 | init(category, enableForLevel); | - | ||||||
| 230 | } executed 4 times by 1 test: end of blockExecuted by:
| 4 | ||||||
| 231 | - | |||||||
| 232 | void QLoggingCategory::init(const char *category, QtMsgType severityLevel) | - | ||||||
| 233 | { | - | ||||||
| 234 | enabled.store(0x01010101); // enabledDebug = enabledWarning = enabledCritical = true; | - | ||||||
| 235 | - | |||||||
| 236 | if (category)
| 2-844 | ||||||
| 237 | name = category; executed 844 times by 243 tests: name = category;Executed by:
| 844 | ||||||
| 238 | else | - | ||||||
| 239 | name = qtDefaultCategoryName; executed 2 times by 1 test: name = qtDefaultCategoryName;Executed by:
| 2 | ||||||
| 240 | - | |||||||
| 241 | if (QLoggingRegistry *reg = QLoggingRegistry::instance())
| 0-846 | ||||||
| 242 | reg->registerCategory(this, severityLevel); executed 846 times by 243 tests: reg->registerCategory(this, severityLevel);Executed by:
| 846 | ||||||
| 243 | } executed 846 times by 243 tests: end of blockExecuted by:
| 846 | ||||||
| 244 | - | |||||||
| 245 | /*! | - | ||||||
| 246 | Destructs a QLoggingCategory object. | - | ||||||
| 247 | */ | - | ||||||
| 248 | QLoggingCategory::~QLoggingCategory() | - | ||||||
| 249 | { | - | ||||||
| 250 | if (QLoggingRegistry *reg = QLoggingRegistry::instance())
| 0-1425 | ||||||
| 251 | reg->unregisterCategory(this); executed 1425 times by 307 tests: reg->unregisterCategory(this);Executed by:
| 1425 | ||||||
| 252 | } executed 1425 times by 307 tests: end of blockExecuted by:
| 1425 | ||||||
| 253 | - | |||||||
| 254 | /*! | - | ||||||
| 255 | \fn const char *QLoggingCategory::categoryName() const | - | ||||||
| 256 | - | |||||||
| 257 | Returns the name of the category. | - | ||||||
| 258 | */ | - | ||||||
| 259 | - | |||||||
| 260 | /*! | - | ||||||
| 261 | \fn bool QLoggingCategory::isDebugEnabled() const | - | ||||||
| 262 | - | |||||||
| 263 | Returns \c true if debug messages should be shown for this category. | - | ||||||
| 264 | Returns \c false otherwise. | - | ||||||
| 265 | - | |||||||
| 266 | \note The \l qCDebug() macro already does this check before executing any | - | ||||||
| 267 | code. However, calling this method may be useful to avoid | - | ||||||
| 268 | expensive generation of data that is only used for debug output. | - | ||||||
| 269 | */ | - | ||||||
| 270 | - | |||||||
| 271 | - | |||||||
| 272 | /*! | - | ||||||
| 273 | \fn bool QLoggingCategory::isInfoEnabled() const | - | ||||||
| 274 | - | |||||||
| 275 | Returns \c true if informational messages should be shown for this category. | - | ||||||
| 276 | Returns \c false otherwise. | - | ||||||
| 277 | - | |||||||
| 278 | \note The \l qCInfo() macro already does this check before executing any | - | ||||||
| 279 | code. However, calling this method may be useful to avoid | - | ||||||
| 280 | expensive generation of data that is only used for debug output. | - | ||||||
| 281 | - | |||||||
| 282 | \since 5.5 | - | ||||||
| 283 | */ | - | ||||||
| 284 | - | |||||||
| 285 | - | |||||||
| 286 | /*! | - | ||||||
| 287 | \fn bool QLoggingCategory::isWarningEnabled() const | - | ||||||
| 288 | - | |||||||
| 289 | Returns \c true if warning messages should be shown for this category. | - | ||||||
| 290 | Returns \c false otherwise. | - | ||||||
| 291 | - | |||||||
| 292 | \note The \l qCWarning() macro already does this check before executing any | - | ||||||
| 293 | code. However, calling this method may be useful to avoid | - | ||||||
| 294 | expensive generation of data that is only used for debug output. | - | ||||||
| 295 | */ | - | ||||||
| 296 | - | |||||||
| 297 | /*! | - | ||||||
| 298 | \fn bool QLoggingCategory::isCriticalEnabled() const | - | ||||||
| 299 | - | |||||||
| 300 | Returns \c true if critical messages should be shown for this category. | - | ||||||
| 301 | Returns \c false otherwise. | - | ||||||
| 302 | - | |||||||
| 303 | \note The \l qCCritical() macro already does this check before executing any | - | ||||||
| 304 | code. However, calling this method may be useful to avoid | - | ||||||
| 305 | expensive generation of data that is only used for debug output. | - | ||||||
| 306 | */ | - | ||||||
| 307 | - | |||||||
| 308 | /*! | - | ||||||
| 309 | Returns \c true if a message of type \a msgtype for the category should be | - | ||||||
| 310 | shown. Returns \c false otherwise. | - | ||||||
| 311 | */ | - | ||||||
| 312 | bool QLoggingCategory::isEnabled(QtMsgType msgtype) const | - | ||||||
| 313 | { | - | ||||||
| 314 | switch (msgtype) { | - | ||||||
| 315 | case QtDebugMsg: return isDebugEnabled(); executed 3395 times by 72 tests: return isDebugEnabled();Executed by:
executed 3395 times by 72 tests: case QtDebugMsg:Executed by:
| 3395 | ||||||
| 316 | case QtInfoMsg: return isInfoEnabled(); executed 90 times by 3 tests: return isInfoEnabled();Executed by:
executed 90 times by 3 tests: case QtInfoMsg:Executed by:
| 90 | ||||||
| 317 | case QtWarningMsg: return isWarningEnabled(); executed 211506 times by 127 tests: return isWarningEnabled();Executed by:
executed 211506 times by 127 tests: case QtWarningMsg:Executed by:
| 211506 | ||||||
| 318 | case QtCriticalMsg: return isCriticalEnabled(); executed 34 times by 4 tests: return isCriticalEnabled();Executed by:
executed 34 times by 4 tests: case QtCriticalMsg:Executed by:
| 34 | ||||||
| 319 | case QtFatalMsg: return true; executed 47 times by 2 tests: return true;Executed by:
executed 47 times by 2 tests: case QtFatalMsg:Executed by:
| 47 | ||||||
| 320 | } | - | ||||||
| 321 | return false; never executed: return false; | 0 | ||||||
| 322 | } | - | ||||||
| 323 | - | |||||||
| 324 | /*! | - | ||||||
| 325 | Changes the message type \a type for the category to \a enable. | - | ||||||
| 326 | - | |||||||
| 327 | \note Changes only affect the current QLoggingCategory object, and won't | - | ||||||
| 328 | change the settings of other objects for the same category name. | - | ||||||
| 329 | Use either \l setFilterRules() or \l installFilter() to change the | - | ||||||
| 330 | configuration globally. | - | ||||||
| 331 | - | |||||||
| 332 | \note \c QtFatalMsg cannot be changed. It will always return \c true. | - | ||||||
| 333 | */ | - | ||||||
| 334 | void QLoggingCategory::setEnabled(QtMsgType type, bool enable) | - | ||||||
| 335 | { | - | ||||||
| 336 | switch (type) { | - | ||||||
| 337 | #ifdef Q_ATOMIC_INT8_IS_SUPPORTED | - | ||||||
| 338 | case QtDebugMsg: bools.enabledDebug.store(enable); break; executed 217006 times by 243 tests: break;Executed by:
executed 217006 times by 243 tests: case QtDebugMsg:Executed by:
| 217006 | ||||||
| 339 | case QtInfoMsg: bools.enabledInfo.store(enable); break; executed 216993 times by 243 tests: break;Executed by:
executed 216993 times by 243 tests: case QtInfoMsg:Executed by:
| 216993 | ||||||
| 340 | case QtWarningMsg: bools.enabledWarning.store(enable); break; executed 216993 times by 243 tests: break;Executed by:
executed 216993 times by 243 tests: case QtWarningMsg:Executed by:
| 216993 | ||||||
| 341 | case QtCriticalMsg: bools.enabledCritical.store(enable); break; executed 216993 times by 243 tests: break;Executed by:
executed 216993 times by 243 tests: case QtCriticalMsg:Executed by:
| 216993 | ||||||
| 342 | #else | - | ||||||
| 343 | case QtDebugMsg: setBoolLane(&enabled, enable, DebugShift); break; | - | ||||||
| 344 | case QtInfoMsg: setBoolLane(&enabled, enable, InfoShift); break; | - | ||||||
| 345 | case QtWarningMsg: setBoolLane(&enabled, enable, WarningShift); break; | - | ||||||
| 346 | case QtCriticalMsg: setBoolLane(&enabled, enable, CriticalShift); break; | - | ||||||
| 347 | #endif | - | ||||||
| 348 | case QtFatalMsg: break; never executed: break;never executed: case QtFatalMsg: | 0 | ||||||
| 349 | } | - | ||||||
| 350 | } executed 867985 times by 243 tests: end of blockExecuted by:
| 867985 | ||||||
| 351 | - | |||||||
| 352 | /*! | - | ||||||
| 353 | \fn QLoggingCategory &QLoggingCategory::operator()() | - | ||||||
| 354 | - | |||||||
| 355 | Returns the object itself. This allows both a QLoggingCategory variable, and | - | ||||||
| 356 | a factory method returning a QLoggingCategory, to be used in \l qCDebug(), | - | ||||||
| 357 | \l qCWarning(), \l qCCritical() macros. | - | ||||||
| 358 | */ | - | ||||||
| 359 | - | |||||||
| 360 | /*! | - | ||||||
| 361 | \fn const QLoggingCategory &QLoggingCategory::operator()() const | - | ||||||
| 362 | - | |||||||
| 363 | Returns the object itself. This allows both a QLoggingCategory variable, and | - | ||||||
| 364 | a factory method returning a QLoggingCategory, to be used in \l qCDebug(), | - | ||||||
| 365 | \l qCWarning(), \l qCCritical() macros. | - | ||||||
| 366 | */ | - | ||||||
| 367 | - | |||||||
| 368 | /*! | - | ||||||
| 369 | Returns a pointer to the global category \c "default" that | - | ||||||
| 370 | is used e.g. by qDebug(), qInfo(), qWarning(), qCritical(), qFatal(). | - | ||||||
| 371 | - | |||||||
| 372 | \note The returned pointer may be null during destruction of | - | ||||||
| 373 | static objects. | - | ||||||
| 374 | - | |||||||
| 375 | \note Ownership of the category is not transferred, do not | - | ||||||
| 376 | \c delete the returned pointer. | - | ||||||
| 377 | - | |||||||
| 378 | */ | - | ||||||
| 379 | QLoggingCategory *QLoggingCategory::defaultCategory() | - | ||||||
| 380 | { | - | ||||||
| 381 | return qtDefaultCategory(); executed 215065 times by 159 tests: return qtDefaultCategory();Executed by:
| 215065 | ||||||
| 382 | } | - | ||||||
| 383 | - | |||||||
| 384 | /*! | - | ||||||
| 385 | \typedef QLoggingCategory::CategoryFilter | - | ||||||
| 386 | - | |||||||
| 387 | This is a typedef for a pointer to a function with the following | - | ||||||
| 388 | signature: | - | ||||||
| 389 | - | |||||||
| 390 | \snippet qloggingcategory/main.cpp 20 | - | ||||||
| 391 | - | |||||||
| 392 | A function with this signature can be installed with \l installFilter(). | - | ||||||
| 393 | */ | - | ||||||
| 394 | - | |||||||
| 395 | /*! | - | ||||||
| 396 | Installs a function \a filter that is used to determine which categories | - | ||||||
| 397 | and message types should be enabled. Returns a pointer to the previous | - | ||||||
| 398 | installed filter. | - | ||||||
| 399 | - | |||||||
| 400 | Every QLoggingCategory object created is passed to the filter, and the | - | ||||||
| 401 | filter is free to change the respective category configuration with | - | ||||||
| 402 | \l setEnabled(). | - | ||||||
| 403 | - | |||||||
| 404 | The filter might be called concurrently from different threads, and | - | ||||||
| 405 | therefore has to be reentrant. | - | ||||||
| 406 | - | |||||||
| 407 | Example: | - | ||||||
| 408 | \snippet qloggingcategory/main.cpp 21 | - | ||||||
| 409 | - | |||||||
| 410 | An alternative way of configuring the default filter is via | - | ||||||
| 411 | \l setFilterRules(). | - | ||||||
| 412 | */ | - | ||||||
| 413 | QLoggingCategory::CategoryFilter | - | ||||||
| 414 | QLoggingCategory::installFilter(QLoggingCategory::CategoryFilter filter) | - | ||||||
| 415 | { | - | ||||||
| 416 | return QLoggingRegistry::instance()->installFilter(filter); executed 7 times by 1 test: return QLoggingRegistry::instance()->installFilter(filter);Executed by:
| 7 | ||||||
| 417 | } | - | ||||||
| 418 | - | |||||||
| 419 | /*! | - | ||||||
| 420 | Configures which categories and message types should be enabled through a | - | ||||||
| 421 | a set of \a rules. | - | ||||||
| 422 | - | |||||||
| 423 | Example: | - | ||||||
| 424 | - | |||||||
| 425 | \snippet qloggingcategory/main.cpp 2 | - | ||||||
| 426 | - | |||||||
| 427 | \note The rules might be ignored if a custom category filter is installed | - | ||||||
| 428 | with \l installFilter(), or if the user defined \c QT_LOGGING_CONF or \c QT_LOGGING_RULES | - | ||||||
| 429 | environment variable. | - | ||||||
| 430 | */ | - | ||||||
| 431 | void QLoggingCategory::setFilterRules(const QString &rules) | - | ||||||
| 432 | { | - | ||||||
| 433 | QLoggingRegistry::instance()->setApiRules(rules); | - | ||||||
| 434 | } executed 24019 times by 2 tests: end of blockExecuted by:
| 24019 | ||||||
| 435 | - | |||||||
| 436 | /*! | - | ||||||
| 437 | \macro qCDebug(category) | - | ||||||
| 438 | \relates QLoggingCategory | - | ||||||
| 439 | \since 5.2 | - | ||||||
| 440 | - | |||||||
| 441 | Returns an output stream for debug messages in the logging category | - | ||||||
| 442 | \a category. | - | ||||||
| 443 | - | |||||||
| 444 | The macro expands to code that checks whether | - | ||||||
| 445 | \l QLoggingCategory::isDebugEnabled() evaluates to \c true. | - | ||||||
| 446 | If so, the stream arguments are processed and sent to the message handler. | - | ||||||
| 447 | - | |||||||
| 448 | Example: | - | ||||||
| 449 | - | |||||||
| 450 | \snippet qloggingcategory/main.cpp 10 | - | ||||||
| 451 | - | |||||||
| 452 | \note Arguments are not processed if debug output for the category is not | - | ||||||
| 453 | enabled, so do not rely on any side effects. | - | ||||||
| 454 | - | |||||||
| 455 | \sa qDebug() | - | ||||||
| 456 | */ | - | ||||||
| 457 | - | |||||||
| 458 | /*! | - | ||||||
| 459 | \macro qCDebug(category, const char *message, ...) | - | ||||||
| 460 | \relates QLoggingCategory | - | ||||||
| 461 | \since 5.3 | - | ||||||
| 462 | - | |||||||
| 463 | Logs a debug message \a message in the logging category \a category. | - | ||||||
| 464 | \a message might contain place holders that are replaced by additional | - | ||||||
| 465 | arguments, similar to the C printf() function. | - | ||||||
| 466 | - | |||||||
| 467 | Example: | - | ||||||
| 468 | - | |||||||
| 469 | \snippet qloggingcategory/main.cpp 13 | - | ||||||
| 470 | - | |||||||
| 471 | \note Arguments might not be processed if debug output for the category is | - | ||||||
| 472 | not enabled, so do not rely on any side effects. | - | ||||||
| 473 | - | |||||||
| 474 | \sa qDebug() | - | ||||||
| 475 | */ | - | ||||||
| 476 | - | |||||||
| 477 | /*! | - | ||||||
| 478 | \macro qCInfo(category) | - | ||||||
| 479 | \relates QLoggingCategory | - | ||||||
| 480 | \since 5.5 | - | ||||||
| 481 | - | |||||||
| 482 | Returns an output stream for informational messages in the logging category | - | ||||||
| 483 | \a category. | - | ||||||
| 484 | - | |||||||
| 485 | The macro expands to code that checks whether | - | ||||||
| 486 | \l QLoggingCategory::isInfoEnabled() evaluates to \c true. | - | ||||||
| 487 | If so, the stream arguments are processed and sent to the message handler. | - | ||||||
| 488 | - | |||||||
| 489 | Example: | - | ||||||
| 490 | - | |||||||
| 491 | \snippet qloggingcategory/main.cpp qcinfo_stream | - | ||||||
| 492 | - | |||||||
| 493 | \note Arguments are not processed if debug output for the category is not | - | ||||||
| 494 | enabled, so do not rely on any side effects. | - | ||||||
| 495 | - | |||||||
| 496 | \sa qInfo() | - | ||||||
| 497 | */ | - | ||||||
| 498 | - | |||||||
| 499 | /*! | - | ||||||
| 500 | \macro qCInfo(category, const char *message, ...) | - | ||||||
| 501 | \relates QLoggingCategory | - | ||||||
| 502 | \since 5.5 | - | ||||||
| 503 | - | |||||||
| 504 | Logs an informational message \a message in the logging category \a category. | - | ||||||
| 505 | \a message might contain place holders that are replaced by additional | - | ||||||
| 506 | arguments, similar to the C printf() function. | - | ||||||
| 507 | - | |||||||
| 508 | Example: | - | ||||||
| 509 | - | |||||||
| 510 | \snippet qloggingcategory/main.cpp qcinfo_printf | - | ||||||
| 511 | - | |||||||
| 512 | \note Arguments might not be processed if debug output for the category is | - | ||||||
| 513 | not enabled, so do not rely on any side effects. | - | ||||||
| 514 | - | |||||||
| 515 | \sa qInfo() | - | ||||||
| 516 | */ | - | ||||||
| 517 | - | |||||||
| 518 | /*! | - | ||||||
| 519 | \macro qCWarning(category) | - | ||||||
| 520 | \relates QLoggingCategory | - | ||||||
| 521 | \since 5.2 | - | ||||||
| 522 | - | |||||||
| 523 | Returns an output stream for warning messages in the logging category | - | ||||||
| 524 | \a category. | - | ||||||
| 525 | - | |||||||
| 526 | The macro expands to code that checks whether | - | ||||||
| 527 | \l QLoggingCategory::isWarningEnabled() evaluates to \c true. | - | ||||||
| 528 | If so, the stream arguments are processed and sent to the message handler. | - | ||||||
| 529 | - | |||||||
| 530 | Example: | - | ||||||
| 531 | - | |||||||
| 532 | \snippet qloggingcategory/main.cpp 11 | - | ||||||
| 533 | - | |||||||
| 534 | \note Arguments are not processed if warning output for the category is not | - | ||||||
| 535 | enabled, so do not rely on any side effects. | - | ||||||
| 536 | - | |||||||
| 537 | \sa qWarning() | - | ||||||
| 538 | */ | - | ||||||
| 539 | - | |||||||
| 540 | /*! | - | ||||||
| 541 | \macro qCWarning(category, const char *message, ...) | - | ||||||
| 542 | \relates QLoggingCategory | - | ||||||
| 543 | \since 5.3 | - | ||||||
| 544 | - | |||||||
| 545 | Logs a warning message \a message in the logging category \a category. | - | ||||||
| 546 | \a message might contain place holders that are replaced by additional | - | ||||||
| 547 | arguments, similar to the C printf() function. | - | ||||||
| 548 | - | |||||||
| 549 | Example: | - | ||||||
| 550 | - | |||||||
| 551 | \snippet qloggingcategory/main.cpp 14 | - | ||||||
| 552 | - | |||||||
| 553 | \note Arguments might not be processed if warning output for the category is | - | ||||||
| 554 | not enabled, so do not rely on any side effects. | - | ||||||
| 555 | - | |||||||
| 556 | \sa qWarning() | - | ||||||
| 557 | */ | - | ||||||
| 558 | - | |||||||
| 559 | /*! | - | ||||||
| 560 | \macro qCCritical(category) | - | ||||||
| 561 | \relates QLoggingCategory | - | ||||||
| 562 | \since 5.2 | - | ||||||
| 563 | - | |||||||
| 564 | Returns an output stream for critical messages in the logging category | - | ||||||
| 565 | \a category. | - | ||||||
| 566 | - | |||||||
| 567 | The macro expands to code that checks whether | - | ||||||
| 568 | \l QLoggingCategory::isCriticalEnabled() evaluates to \c true. | - | ||||||
| 569 | If so, the stream arguments are processed and sent to the message handler. | - | ||||||
| 570 | - | |||||||
| 571 | Example: | - | ||||||
| 572 | - | |||||||
| 573 | \snippet qloggingcategory/main.cpp 12 | - | ||||||
| 574 | - | |||||||
| 575 | \note Arguments are not processed if critical output for the category is not | - | ||||||
| 576 | enabled, so do not rely on any side effects. | - | ||||||
| 577 | - | |||||||
| 578 | \sa qCritical() | - | ||||||
| 579 | */ | - | ||||||
| 580 | - | |||||||
| 581 | /*! | - | ||||||
| 582 | \macro qCCritical(category, const char *message, ...) | - | ||||||
| 583 | \relates QLoggingCategory | - | ||||||
| 584 | \since 5.3 | - | ||||||
| 585 | - | |||||||
| 586 | Logs a critical message \a message in the logging category \a category. | - | ||||||
| 587 | \a message might contain place holders that are replaced by additional | - | ||||||
| 588 | arguments, similar to the C printf() function. | - | ||||||
| 589 | - | |||||||
| 590 | Example: | - | ||||||
| 591 | - | |||||||
| 592 | \snippet qloggingcategory/main.cpp 15 | - | ||||||
| 593 | - | |||||||
| 594 | \note Arguments might not be processed if critical output for the category | - | ||||||
| 595 | is not enabled, so do not rely on any side effects. | - | ||||||
| 596 | - | |||||||
| 597 | \sa qCritical() | - | ||||||
| 598 | */ | - | ||||||
| 599 | /*! | - | ||||||
| 600 | \macro Q_DECLARE_LOGGING_CATEGORY(name) | - | ||||||
| 601 | \sa Q_LOGGING_CATEGORY() | - | ||||||
| 602 | \relates QLoggingCategory | - | ||||||
| 603 | \since 5.2 | - | ||||||
| 604 | - | |||||||
| 605 | Declares a logging category \a name. The macro can be used to declare | - | ||||||
| 606 | a common logging category shared in different parts of the program. | - | ||||||
| 607 | - | |||||||
| 608 | This macro must be used outside of a class or method. | - | ||||||
| 609 | */ | - | ||||||
| 610 | - | |||||||
| 611 | /*! | - | ||||||
| 612 | \macro Q_LOGGING_CATEGORY(name, string) | - | ||||||
| 613 | \sa Q_DECLARE_LOGGING_CATEGORY() | - | ||||||
| 614 | \relates QLoggingCategory | - | ||||||
| 615 | \since 5.2 | - | ||||||
| 616 | - | |||||||
| 617 | Defines a logging category \a name, and makes it configurable under the | - | ||||||
| 618 | \a string identifier. By default, all message types are enabled. | - | ||||||
| 619 | - | |||||||
| 620 | Only one translation unit in a library or executable can define a category | - | ||||||
| 621 | with a specific name. | - | ||||||
| 622 | - | |||||||
| 623 | This macro must be used outside of a class or method. | - | ||||||
| 624 | */ | - | ||||||
| 625 | - | |||||||
| 626 | /*! | - | ||||||
| 627 | \macro Q_LOGGING_CATEGORY(name, string, msgType) | - | ||||||
| 628 | \sa Q_DECLARE_LOGGING_CATEGORY() | - | ||||||
| 629 | \relates QLoggingCategory | - | ||||||
| 630 | \since 5.4 | - | ||||||
| 631 | - | |||||||
| 632 | Defines a logging category \a name, and makes it configurable under the | - | ||||||
| 633 | \a string identifier. By default, messages of QtMsgType \a msgType | - | ||||||
| 634 | and more severe are enabled, types with a lower severity are disabled. | - | ||||||
| 635 | - | |||||||
| 636 | Only one translation unit in a library or executable can define a category | - | ||||||
| 637 | with a specific name. | - | ||||||
| 638 | - | |||||||
| 639 | This macro must be used outside of a class or method. It is only defined | - | ||||||
| 640 | if variadic macros are supported. | - | ||||||
| 641 | */ | - | ||||||
| 642 | - | |||||||
| 643 | QT_END_NAMESPACE | - | ||||||
| Source code | Switch to Preprocessed file |