Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qloggingregistry_p.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
// Qt-Security score:significant reason:default
4
5
#
ifndef
QLOGGINGREGISTRY_P_H
6
#
define
QLOGGINGREGISTRY_P_H
7
8
//
9
// W A R N I N G
10
// -------------
11
//
12
// This file is not part of the Qt API. It exists for the convenience
13
// of a number of Qt sources files. This header file may change from
14
// version to version without notice, or even be removed.
15
//
16
// We mean it.
17
//
18
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
>
25
26
#
include
<
map
>
27
28
class
tst_QLoggingRegistry;
29
30
QT_BEGIN_NAMESPACE
31
32
#
define
Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE_IMPL
(
name
,
env
,
categoryName
)
33
const
QLoggingCategory
&
name
(
)
34
{
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
)
;
39
return
category
;
40
}
41
42
#
define
Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE
(
name
,
env
,
categoryName
)
43
inline
namespace
QtPrivateLogging
{
44
Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE_IMPL
(
name
,
env
,
categoryName
)
45
}
46
Q_WEAK_OVERLOAD
47
Q_DECL_DEPRECATED_X
(
"Logging categories should either be static or declared in a header"
)
48
const
QLoggingCategory
&
name
(
)
{
return
QtPrivateLogging
::
name
(
)
;
}
49
50
#
define
Q_STATIC_LOGGING_CATEGORY_WITH_ENV_OVERRIDE
(
name
,
env
,
categoryName
)
51
static
Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE_IMPL
(
name
,
env
,
categoryName
)
52
53
class
Q_AUTOTEST_EXPORT
QLoggingRule
54
{
55
public
:
56
QLoggingRule();
57
QLoggingRule(QStringView pattern,
bool
enabled);
58
int
pass(QLatin1StringView categoryName, QtMsgType type)
const
;
59
60
enum
PatternFlag {
61
FullText = 0x1,
62
LeftFilter = 0x2,
63
RightFilter = 0x4,
64
MidFilter = LeftFilter | RightFilter
65
};
66
Q_DECLARE_FLAGS(PatternFlags, PatternFlag)
67
68
QString category;
69
int
messageType = -1;
70
PatternFlags flags;
71
bool
enabled =
false
;
72
73
private
:
74
void
parse(QStringView pattern);
75
};
76
77
Q_DECLARE_OPERATORS_FOR_FLAGS(QLoggingRule::PatternFlags)
78
Q_DECLARE_TYPEINFO(QLoggingRule, Q_RELOCATABLE_TYPE);
79
80
class
Q_AUTOTEST_EXPORT
QLoggingSettingsParser
81
{
82
public
:
83
void
setImplicitRulesSection(
bool
inRulesSection) { m_inRulesSection = inRulesSection; }
84
85
void
setContent(QStringView content,
char16_t
separator = u'\n');
86
void
setContent(FILE *stream);
87
88
QList<QLoggingRule> rules()
const
{
return
_rules; }
89
90
private
:
91
void
parseNextLine(QStringView line);
92
93
private
:
94
bool
m_inRulesSection =
false
;
95
QList<QLoggingRule> _rules;
96
};
97
98
class
QLoggingRegistry
99
{
100
Q_DISABLE_COPY_MOVE
(
QLoggingRegistry
)
101
public
:
102
QLoggingRegistry
();
103
104
Q_AUTOTEST_EXPORT
void
initializeRules
();
105
106
void
registerCategory
(QLoggingCategory *category, QtMsgType enableForLevel);
107
void
unregisterCategory
(QLoggingCategory *category);
108
109
Q_CORE_EXPORT
void
registerEnvironmentOverrideForCategory
(
const
char
*categoryName,
110
const
char
*environment);
111
112
void
setApiRules
(
const
QString &content);
113
114
QLoggingCategory
::
CategoryFilter
115
installFilter
(
QLoggingCategory
::
CategoryFilter
filter
);
116
117
Q_CORE_EXPORT
static
QLoggingRegistry *
instance
();
118
119
static
constexpr
const
char
defaultCategoryName
[] =
"default"
;
120
static
QLoggingCategory
*
defaultCategory
();
121
122
private
:
123
Q_AUTOTEST_EXPORT
void
updateRules();
124
static
inline
QLoggingRegistry
*self =
nullptr
;
125
126
static
void
defaultCategoryFilter(QLoggingCategory *category);
127
128
enum
RuleSet {
129
// sorted by order in which defaultCategoryFilter considers them:
130
QtConfigRules,
131
ConfigRules,
132
ApiRules,
133
EnvironmentRules,
134
135
NumRuleSets
136
};
137
138
QMutex registryMutex;
139
140
// protected by mutex:
141
QList<QLoggingRule> ruleSets[NumRuleSets];
142
QHash<QLoggingCategory *, QtMsgType> categories;
143
QLoggingCategory
::
CategoryFilter
categoryFilter
;
144
std::map<QByteArrayView,
const
char
*> qtCategoryEnvironmentOverrides;
145
146
friend
class
::tst_QLoggingRegistry;
147
};
148
149
class
QLoggingCategoryWithEnvironmentOverride
:
public
QLoggingCategory
150
{
151
public
:
152
QLoggingCategoryWithEnvironmentOverride
(
const
char
*category,
const
char
*env)
153
:
QLoggingCategory
(
registerOverride
(
category
,
env
),
QtInfoMsg
)
154
{}
155
156
private
:
157
static
const
char
*registerOverride(
const
char
*categoryName,
const
char
*environment)
158
{
159
QLoggingRegistry
*c = QLoggingRegistry::instance();
160
if
(c)
161
c
->
registerEnvironmentOverrideForCategory
(categoryName, environment);
162
return
categoryName;
163
}
164
};
165
166
QT_END_NAMESPACE
167
168
#
endif
// QLOGGINGREGISTRY_P_H
QLoggingCategoryWithEnvironmentOverride
Definition
qloggingregistry_p.h:150
QLoggingCategoryWithEnvironmentOverride::QLoggingCategoryWithEnvironmentOverride
QLoggingCategoryWithEnvironmentOverride(const char *category, const char *env)
Definition
qloggingregistry_p.h:152
QLoggingRegistry
Definition
qloggingregistry_p.h:99
QLoggingRegistry::defaultCategoryName
static constexpr const char defaultCategoryName[]
Definition
qloggingregistry_p.h:119
QLoggingRegistry::unregisterCategory
void unregisterCategory(QLoggingCategory *category)
Definition
qloggingregistry.cpp:411
QLoggingRegistry::registerEnvironmentOverrideForCategory
Q_CORE_EXPORT void registerEnvironmentOverrideForCategory(const char *categoryName, const char *environment)
Definition
qloggingregistry.cpp:425
QLoggingRegistry::defaultCategory
static QLoggingCategory * defaultCategory()
Definition
qloggingregistry.cpp:492
QLoggingRegistry::initializeRules
Q_AUTOTEST_EXPORT void initializeRules()
Definition
qloggingregistry.cpp:336
QLoggingRegistry::registerCategory
void registerCategory(QLoggingCategory *category, QtMsgType enableForLevel)
Definition
qloggingregistry.cpp:396
QLoggingRegistry::setApiRules
void setApiRules(const QString &content)
Definition
qloggingregistry.cpp:435
QLoggingRule
Definition
qloggingregistry_p.h:54
QLoggingSettingsParser
Definition
qloggingregistry_p.h:81
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
DefaultLoggingCategoryEnabledValue
static QT_BEGIN_NAMESPACE constexpr int DefaultLoggingCategoryEnabledValue
Definition
qloggingcategory_p.h:25
Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE_IMPL
#define Q_LOGGING_CATEGORY_WITH_ENV_OVERRIDE_IMPL(name, env, categoryName)
Definition
qloggingregistry_p.h:32
qtbase
src
corelib
io
qloggingregistry_p.h
Generated on
for Qt by
1.18.0