Qt 6.x
The Qt SDK
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
36};
37
39{
40 Q_DISABLE_COPY(QMessageLogContext)
41public:
42 constexpr QMessageLogContext() noexcept = default;
43 constexpr QMessageLogContext(const char *fileName, int lineNumber, const char *functionName, const char *categoryName) noexcept
44 : line(lineNumber), file(fileName), function(functionName), category(categoryName) {}
45
46 int version = 2;
47 int line = 0;
48 const char *file = nullptr;
49 const char *function = nullptr;
50 const char *category = nullptr;
51
52private:
53 QMessageLogContext &copyContextFrom(const QMessageLogContext &logContext) noexcept;
54
55 friend class QMessageLogger;
56 friend class QDebug;
57};
58
60
61#if defined(Q_CC_MSVC_ONLY)
62# define QT_MESSAGE_LOGGER_NORETURN
63#else
64# define QT_MESSAGE_LOGGER_NORETURN Q_NORETURN
65#endif
66
67class Q_CORE_EXPORT QMessageLogger
68{
69 Q_DISABLE_COPY(QMessageLogger)
70public:
71 constexpr QMessageLogger() : context() {}
72 constexpr QMessageLogger(const char *file, int line, const char *function)
73 : context(file, line, function, "default") {}
74 constexpr QMessageLogger(const char *file, int line, const char *function, const char *category)
76
77 void debug(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
78 void noDebug(const char *, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3)
79 {}
80 void info(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
82 void warning(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
84 void critical(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
86 void fatal(const char *msg, ...) const noexcept Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
87
88 typedef const QLoggingCategory &(*CategoryFunction)();
89
90 void debug(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
91 void debug(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
92 void info(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
93 void info(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
95 void warning(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
97 void warning(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
99 void critical(const QLoggingCategory &cat, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
101 void critical(CategoryFunction catFunc, const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
103 void fatal(const QLoggingCategory &cat, const char *msg, ...) const noexcept Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
105 void fatal(CategoryFunction catFunc, const char *msg, ...) const noexcept Q_ATTRIBUTE_FORMAT_PRINTF(3, 4);
106
107#ifndef QT_NO_DEBUG_STREAM
108 QDebug debug() const;
109 QDebug debug(const QLoggingCategory &cat) const;
110 QDebug debug(CategoryFunction catFunc) const;
111 QDebug info() const;
112 QDebug info(const QLoggingCategory &cat) const;
113 QDebug info(CategoryFunction catFunc) const;
115 QDebug warning() const;
117 QDebug warning(const QLoggingCategory &cat) const;
119 QDebug warning(CategoryFunction catFunc) const;
121 QDebug critical() const;
123 QDebug critical(const QLoggingCategory &cat) const;
125 QDebug critical(CategoryFunction catFunc) const;
127 QDebug fatal() const;
129 QDebug fatal(const QLoggingCategory &cat) const;
131 QDebug fatal(CategoryFunction catFunc) const;
132
133 QNoDebug noDebug() const noexcept;
134#endif // QT_NO_DEBUG_STREAM
135
136private:
138};
139
140#undef QT_MESSAGE_LOGGER_NORETURN
141
142#if !defined(QT_MESSAGELOGCONTEXT) && !defined(QT_NO_MESSAGELOGCONTEXT)
143# if defined(QT_NO_DEBUG)
144# define QT_NO_MESSAGELOGCONTEXT
145# else
146# define QT_MESSAGELOGCONTEXT
147# endif
148#endif
149
150#ifdef QT_MESSAGELOGCONTEXT
151 #define QT_MESSAGELOG_FILE static_cast<const char *>(__FILE__)
152 #define QT_MESSAGELOG_LINE __LINE__
153 #define QT_MESSAGELOG_FUNC static_cast<const char *>(Q_FUNC_INFO)
154#else
155 #define QT_MESSAGELOG_FILE nullptr
156 #define QT_MESSAGELOG_LINE 0
157 #define QT_MESSAGELOG_FUNC nullptr
158#endif
159
160#define qDebug QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).debug
161#define qInfo QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).info
162#define qWarning QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).warning
163#define qCritical QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).critical
164#define qFatal QMessageLogger(QT_MESSAGELOG_FILE, QT_MESSAGELOG_LINE, QT_MESSAGELOG_FUNC).fatal
165
166#define QT_NO_QDEBUG_MACRO while (false) QMessageLogger().noDebug
167
168#if defined(QT_NO_DEBUG_OUTPUT)
169# undef qDebug
170# define qDebug QT_NO_QDEBUG_MACRO
171#endif
172#if defined(QT_NO_INFO_OUTPUT)
173# undef qInfo
174# define qInfo QT_NO_QDEBUG_MACRO
175#endif
176#if defined(QT_NO_WARNING_OUTPUT)
177# undef qWarning
178# define qWarning QT_NO_QDEBUG_MACRO
179#endif
180
181Q_CORE_EXPORT void qt_message_output(QtMsgType, const QMessageLogContext &context,
182 const QString &message);
183
184Q_CORE_EXPORT Q_DECL_COLD_FUNCTION void qErrnoWarning(int code, const char *msg, ...);
185Q_CORE_EXPORT Q_DECL_COLD_FUNCTION void qErrnoWarning(const char *msg, ...);
186
189
190Q_CORE_EXPORT void qSetMessagePattern(const QString &messagePattern);
192 const QString &buf);
193
195Q_CORE_EXPORT QString qt_error_string(int errorCode = -1);
196
198#endif // QLOGGING_H
\inmodule QtCore
\inmodule QtCore
\inmodule QtCore
Definition qlogging.h:39
const char * category
Definition qlogging.h:50
const char * function
Definition qlogging.h:49
constexpr QMessageLogContext() noexcept=default
const char * file
Definition qlogging.h:48
\inmodule QtCore
Definition qlogging.h:68
QDebug debug(CategoryFunction catFunc) const
constexpr QMessageLogger()
Constructs a default QMessageLogger.
Definition qlogging.h:71
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:72
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:74
Q_DECL_COLD_FUNCTION QDebug fatal(CategoryFunction catFunc) const
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
const QLoggingCategory & category()
[1]
Combined button and popup list for selecting options.
static void * context
#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
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction function
Q_CORE_EXPORT Q_DECL_COLD_FUNCTION void qErrnoWarning(int code, const char *msg,...)
#define QT_MESSAGE_LOGGER_NORETURN
Definition qlogging.h:64
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:32
@ QtSystemMsg
Definition qlogging.h:35
@ QtInfoMsg
Definition qlogging.h:34
@ QtWarningMsg
Definition qlogging.h:31
@ QtFatalMsg
Definition qlogging.h:33
@ 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:187
GLenum type
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei const GLchar * message
QFile file
[0]
QFileInfo info(fileName)
[8]