4#ifndef QLOGGINGREGISTRY_P_H
5#define QLOGGINGREGISTRY_P_H
18#include <QtCore/private/qglobal_p.h>
19#include <QtCore/qloggingcategory.h>
20#include <QtCore/qlist.h>
21#include <QtCore/qhash.h>
22#include <QtCore/qmutex.h>
23#include <QtCore/qstring.h>
24#include <QtCore/qtextstream.h>
28class tst_QLoggingRegistry;
32#define Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE_IMPL(name, env, categoryName)
33 const QLoggingCategory &name()
35 static constexpr char cname[] = categoryName;
36 static_assert(cname[0
] == 'q' && cname[1
] == 't' && cname[2
] == '.'
37 && cname[4
] != '\0', "Category name must start with 'qt.'");
38 static const QLoggingCategoryWithEnvironmentOverride category(cname, env);
42#if defined(Q_CC_GNU_ONLY) && Q_CC_GNU < 1000
46#define Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE(name, env, categoryName)
47 namespace QtPrivateLogging {
48 Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE_IMPL(name, env, categoryName)
50 using QtPrivateLogging::name;
52#define Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE(name, env, categoryName)
53 namespace QtPrivateLogging {
57 Q_DECL_DEPRECATED_X("Logging categories should either be static or declared in a header")
58 const QLoggingCategory &name() { return QtPrivateLogging::name(); }
61#define Q_STATIC_LOGGING_CATEGORY_WITH_ENV_OVERRIDE(name, env, categoryName)
68 QLoggingRule(QStringView pattern,
bool enabled);
69 int pass(QLatin1StringView categoryName, QtMsgType type)
const;
75 MidFilter = LeftFilter | RightFilter
77 Q_DECLARE_FLAGS(PatternFlags, PatternFlag)
85 void parse(QStringView pattern);
88Q_DECLARE_OPERATORS_FOR_FLAGS(QLoggingRule::PatternFlags)
89Q_DECLARE_TYPEINFO(QLoggingRule, Q_RELOCATABLE_TYPE);
94 void setImplicitRulesSection(
bool inRulesSection) { m_inRulesSection = inRulesSection; }
96 void setContent(QStringView content);
97 void setContent(QTextStream &stream);
99 QList<QLoggingRule> rules()
const {
return _rules; }
102 void parseNextLine(QStringView line);
105 bool m_inRulesSection =
false;
106 QList<QLoggingRule> _rules;
111 Q_DISABLE_COPY_MOVE(QLoggingRegistry)
117 void registerCategory(QLoggingCategory *category, QtMsgType enableForLevel);
120#ifndef QT_BUILD_INTERNAL
135 static void defaultCategoryFilter(QLoggingCategory *category);
147 QMutex registryMutex;
150 QList<QLoggingRule> ruleSets[NumRuleSets];
151 QHash<QLoggingCategory *, QtMsgType> categories;
152 QLoggingCategory::CategoryFilter categoryFilter;
153 std::map<QByteArrayView,
const char *> qtCategoryEnvironmentOverrides;
155 friend class ::tst_QLoggingRegistry;
166 static const char *registerOverride(
const char *categoryName,
const char *environment)
168 QLoggingRegistry *c = QLoggingRegistry::instance();
170 c->registerEnvironmentOverrideForCategory(categoryName, environment);
QLoggingCategoryWithEnvironmentOverride(const char *category, const char *env)
void unregisterCategory(QLoggingCategory *category)
static QLoggingRegistry * instance()
Q_CORE_EXPORT void registerEnvironmentOverrideForCategory(const char *categoryName, const char *environment)
void registerCategory(QLoggingCategory *category, QtMsgType enableForLevel)
QLoggingCategory::CategoryFilter installFilter(QLoggingCategory::CategoryFilter filter)
void setApiRules(const QString &content)
Combined button and popup list for selecting options.
Q_GLOBAL_STATIC(DefaultRoleNames, qDefaultRoleNames, { { Qt::DisplayRole, "display" }, { Qt::DecorationRole, "decoration" }, { Qt::EditRole, "edit" }, { Qt::ToolTipRole, "toolTip" }, { Qt::StatusTipRole, "statusTip" }, { Qt::WhatsThisRole, "whatsThis" }, }) const QHash< int
QT_BEGIN_NAMESPACE const char qtDefaultCategoryName[]
#define Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE_IMPL(name, env, categoryName)