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