Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qlogging.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QLOGGING_H
5#define QLOGGING_H
6
7#include <QtCore/qtclasshelpermacros.h>
8#include <QtCore/qtconfigmacros.h>
9#include <QtCore/qtcoreexports.h>
10#include <QtCore/qcontainerfwd.h>
11
12#if 0
13// header is automatically included in qglobal.h
14#pragma qt_no_master_include
15#pragma qt_class(QtLogging)
16#endif
17
19
20/*
21 Forward declarations only.
22
23 In order to use the qDebug() stream, you must #include<QDebug>
24*/
25class QDebug;
26class QNoDebug;
27
28
31 QT7_ONLY(QtInfoMsg,)
35 QT6_ONLY(QtInfoMsg,)
36#if QT_DEPRECATED_SINCE(6, 7)
37 QtSystemMsg Q_DECL_ENUMERATOR_DEPRECATED_X("Use QtCriticalMsg instead.") = QtCriticalMsg
38#endif
39};
40
43{
44 Q_DISABLE_COPY(QMessageLogContext)
45public:
46 static constexpr int CurrentVersion = 2;
47 constexpr QMessageLogContext() noexcept = default;
48 constexpr QMessageLogContext(const char *fileName, int lineNumber, const char *functionName, const char *categoryName) noexcept
49 : line(lineNumber), file(fileName), function(functionName), category(categoryName) {}
50
52 int line = 0;
53 const char *file = nullptr;
54 const char *function = nullptr;
55 const char *category = nullptr;
56
57private:
58 QMessageLogContext &copyContextFrom(const QMessageLogContext &logContext) noexcept;
59
61 friend class QMessageLogger;
62};
63
65
66#if defined(Q_CC_MSVC_ONLY)
67# define QT_MESSAGE_LOGGER_NORETURN
68#else
69# define QT_MESSAGE_LOGGER_NORETURN Q_NORETURN
70#endif
71
72class Q_CORE_EXPORT QMessageLogger
73{
74 Q_DISABLE_COPY(QMessageLogger)
75public:
76 constexpr QMessageLogger() : context() {}
77 constexpr QMessageLogger(const char *file, int line, const char *function)
78 : context(file, line, function, "default") {}
79 constexpr QMessageLogger(const char *file, int line, const char *function, const char *category)
80 : context(file, line, function, category) {}
81
82 void debug(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
83 void noDebug(const char *, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3)
84 {}
85 void info(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
87 void warning(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
89 void critical(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
91 void fatal(const char *msg, ...) const noexcept Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
92
93 typedef const QLoggingCategory &(*CategoryFunction)();
94
95 void debug(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
96 void debug(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
97 void info(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
98 void info(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
100 void warning(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
102 void warning(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
104 void critical(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
106 void critical(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
108 void fatal(const QLoggingCategory &cat, const char *msg, ...) const noexcept Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
110 void fatal(CategoryFunction catFunc, const char *msg, ...) const noexcept Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
111
112#ifndef QT_NO_DEBUG_STREAM
113 QDebug debug() const;
114 QDebug debug(const QLoggingCategory &cat) const;
115 QDebug debug(CategoryFunction catFunc) const;
116 QDebug info() const;
117 QDebug info(const QLoggingCategory &cat) const;
118 QDebug info(CategoryFunction catFunc) const;
120 QDebug warning() const;
122 QDebug warning(const QLoggingCategory &cat) const;
124 QDebug warning(CategoryFunction catFunc) const;
126 QDebug critical() const;
128 QDebug critical(const QLoggingCategory &cat) const;
130 QDebug critical(CategoryFunction catFunc) const;
132 QDebug fatal() const;
134 QDebug fatal(const QLoggingCategory &cat) const;
136 QDebug fatal(CategoryFunction catFunc) const;
137
138 QNoDebug noDebug() const noexcept;
139#endif // QT_NO_DEBUG_STREAM
140
141private:
142 QMessageLogContext context;
143};
144
145#undef QT_MESSAGE_LOGGER_NORETURN
146
147#if !defined(QT_MESSAGELOGCONTEXT) && !defined(QT_NO_MESSAGELOGCONTEXT)
148# if defined(QT_NO_DEBUG)
149# define QT_NO_MESSAGELOGCONTEXT
150# else
151# define QT_MESSAGELOGCONTEXT
152# endif
153#endif
154
155#ifdef QT_MESSAGELOGCONTEXT
156 #define QT_MESSAGELOG_FILE static_cast<const char *>(__FILE__)
157 #define QT_MESSAGELOG_LINE __LINE__
158 #define QT_MESSAGELOG_FUNC static_cast<const char *>(Q_FUNC_INFO)
159#else
160 #define QT_MESSAGELOG_FILE nullptr
161 #define QT_MESSAGELOG_LINE 0
162 #define QT_MESSAGELOG_FUNC nullptr
163#endif
164
165#define qDebug QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug
166#define qInfo QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).info
167#define qWarning QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).warning
168#define qCritical QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).critical
169#define qFatal QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).fatal
170
171#define QT_NO_QDEBUG_MACRO while (false) QMessageLogger().noDebug
172
173#if defined(QT_NO_DEBUG_OUTPUT)
174# undef qDebug
175# define qDebug QT_NO_QDEBUG_MACRO
176#endif
177#if defined(QT_NO_INFO_OUTPUT)
178# undef qInfo
179# define qInfo QT_NO_QDEBUG_MACRO
180#endif
181#if defined(QT_NO_WARNING_OUTPUT)
182# undef qWarning
183# define qWarning QT_NO_QDEBUG_MACRO
184#endif
185
186Q_CORE_EXPORT void qt_message_output(QtMsgType, const QMessageLogContext &context,
187 const QString &message);
188
189Q_CORE_EXPORT Q_DECL_COLD_FUNCTION void qErrnoWarning(int code, const char *msg, ...);
190Q_CORE_EXPORT Q_DECL_COLD_FUNCTION void qErrnoWarning(const char *msg, ...);
191
194
195Q_CORE_EXPORT void qSetMessagePattern(const QString &messagePattern);
197 const QString &buf);
198
200Q_CORE_EXPORT QString qt_error_string(int errorCode = -1);
201
203#endif // QLOGGING_H
\inmodule QtCore
\inmodule QtCore
\inmodule QtCore
Definition qlogging.h:43
const char * category
Definition qlogging.h:55
constexpr QMessageLogContext() noexcept=default
const char * file
Definition qlogging.h:53
static constexpr int CurrentVersion
Definition qlogging.h:46
\inmodule QtCore
Definition qlogging.h:73
QDebug debug(CategoryFunction catFunc) const
constexpr QMessageLogger()
Constructs a default QMessageLogger.
Definition qlogging.h:76
Q_DECL_COLD_FUNCTION QDebug warning(CategoryFunction catFunc) const
constexpr QMessageLogger(const char *file, int line, const char *function)
Constructs a QMessageLogger to record log messages for file at line in function.
Definition qlogging.h:77
Q_DECL_COLD_FUNCTION QDebug critical(CategoryFunction catFunc) const
QDebug info(CategoryFunction catFunc) const
constexpr QMessageLogger(const char *file, int line, const char *function, const char *category)
Constructs a QMessageLogger to record category messages for file at line in function.
Definition qlogging.h:79
Q_DECL_COLD_FUNCTION QDebug fatal(CategoryFunction catFunc) const
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
const QLoggingCategory & category()
[1]
Combined button and popup list for selecting options.
class QT6_ONLY(Q_CORE_EXPORT) QChar
Definition qchar.h:44
#define Q_DECL_ENUMERATOR_DEPRECATED_X(x)
#define Q_ATTRIBUTE_FORMAT_PRINTF(A, B)
#define Q_DECL_COLD_FUNCTION
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
Q_CORE_EXPORT Q_DECL_COLD_FUNCTION void qErrnoWarning(int code, const char *msg,...)
#define QT_MESSAGE_LOGGER_NORETURN
Definition qlogging.h:69
Q_DECL_COLD_FUNCTION Q_CORE_EXPORT QString qt_error_string(int errorCode=-1)
Q_CORE_EXPORT QString qFormatLogMessage(QtMsgType type, const QMessageLogContext &context, const QString &buf)
Q_CORE_EXPORT void qSetMessagePattern(const QString &messagePattern)
Q_CORE_EXPORT QtMessageHandler qInstallMessageHandler(QtMessageHandler)
QtMsgType
Definition qlogging.h:29
@ QtCriticalMsg
Definition qlogging.h:33
@ QtWarningMsg
Definition qlogging.h:32
@ QtFatalMsg
Definition qlogging.h:34
@ QtDebugMsg
Definition qlogging.h:30
Q_CORE_EXPORT void qt_message_output(QtMsgType, const QMessageLogContext &context, const QString &message)
void(* QtMessageHandler)(QtMsgType, const QMessageLogContext &, const QString &)
Definition qlogging.h:192
GLenum type
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei const GLchar * message
QDebug warning(QAnyStringView fileName, int lineNumber)
QFile file
[0]
QHostInfo info
[0]