5#ifndef QLOGGINGREGISTRY_P_H
6#define QLOGGINGREGISTRY_P_H
19#include <QtCore/private/qloggingcategory_p.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#define Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE(name, env, categoryName)
43 inline namespace QtPrivateLogging {
47 Q_DECL_DEPRECATED_X("Logging categories should either be static or declared in a header")
48 const QLoggingCategory &name() { return QtPrivateLogging::name(); }
50#define Q_STATIC_LOGGING_CATEGORY_WITH_ENV_OVERRIDE(name, env, categoryName)
57 QLoggingRule(QStringView pattern,
bool enabled);
58 int pass(QLatin1StringView categoryName, QtMsgType type)
const;
64 MidFilter = LeftFilter | RightFilter
66 Q_DECLARE_FLAGS(PatternFlags, PatternFlag)
74 void parse(QStringView pattern);
77Q_DECLARE_OPERATORS_FOR_FLAGS(QLoggingRule::PatternFlags)
78Q_DECLARE_TYPEINFO(QLoggingRule, Q_RELOCATABLE_TYPE);
83 void setImplicitRulesSection(
bool inRulesSection) { m_inRulesSection = inRulesSection; }
85 void setContent(QStringView content,
char16_t separator = u'\n');
86 void setContent(FILE *stream);
88 QList<QLoggingRule> rules()
const {
return _rules; }
91 void parseNextLine(QStringView line);
94 bool m_inRulesSection =
false;
95 QList<QLoggingRule> _rules;
106 void registerCategory(QLoggingCategory *category, QtMsgType enableForLevel);
110 const char *environment);
117 Q_CORE_EXPORT
static QLoggingRegistry *
instance();
123 Q_AUTOTEST_EXPORT
void updateRules();
126 static void defaultCategoryFilter(QLoggingCategory *category);
138 QMutex registryMutex;
141 QList<QLoggingRule> ruleSets[NumRuleSets];
142 QHash<QLoggingCategory *, QtMsgType> categories;
144 std::map<QByteArrayView,
const char *> qtCategoryEnvironmentOverrides;
146 friend class ::tst_QLoggingRegistry;
157 static const char *registerOverride(
const char *categoryName,
const char *environment)
QLoggingCategoryWithEnvironmentOverride(const char *category, const char *env)
static constexpr const char defaultCategoryName[]
void unregisterCategory(QLoggingCategory *category)
Q_CORE_EXPORT void registerEnvironmentOverrideForCategory(const char *categoryName, const char *environment)
static QLoggingCategory * defaultCategory()
Q_AUTOTEST_EXPORT void initializeRules()
void registerCategory(QLoggingCategory *category, QtMsgType enableForLevel)
void setApiRules(const QString &content)
static QT_BEGIN_NAMESPACE constexpr int DefaultLoggingCategoryEnabledValue
#define Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE_IMPL(name, env, categoryName)