@@ -182,17 +182,18 @@ void LogManager::filterCategory(QLoggingCategory* category) {
182
182
auto categoryName = QLatin1StringView (category->categoryName ());
183
183
auto isQs = categoryName.startsWith (QLatin1StringView (" quickshell." ));
184
184
185
- if (instance->lastCategoryFilter ) {
186
- instance->lastCategoryFilter (category);
187
- }
188
-
189
- auto filter = CategoryFilter (category);
185
+ CategoryFilter filter;
190
186
187
+ // We don't respect log filters for qs logs because some distros like to ship
188
+ // default configs that hide everything. QT_LOGGING_RULES is considered via the filter list.
191
189
if (isQs) {
192
- filter.debug = filter.debug || instance->mDefaultLevel == QtDebugMsg;
193
- filter.info = filter.debug || instance->mDefaultLevel == QtInfoMsg;
194
- filter.warn = filter.info || instance->mDefaultLevel == QtWarningMsg;
195
- filter.critical = filter.warn || instance->mDefaultLevel == QtCriticalMsg;
190
+ filter.debug = instance->mDefaultLevel == QtDebugMsg;
191
+ filter.info = instance->mDefaultLevel == QtInfoMsg;
192
+ filter.warn = instance->mDefaultLevel == QtWarningMsg;
193
+ filter.critical = instance->mDefaultLevel == QtCriticalMsg;
194
+ } else if (instance->lastCategoryFilter ) {
195
+ instance->lastCategoryFilter (category);
196
+ filter = CategoryFilter (category);
196
197
}
197
198
198
199
for (const auto & rule: *instance->rules ) {
@@ -235,8 +236,12 @@ void LogManager::init(
235
236
236
237
{
237
238
QLoggingSettingsParser parser;
238
- parser.setContent (rules);
239
+ // Load QT_LOGGING_RULES because we ignore the last category filter for QS messages
240
+ // due to disk config files.
241
+ parser.setContent (qEnvironmentVariable (" QT_LOGGING_RULES" ));
239
242
instance->rules = new QList (parser.rules ());
243
+ parser.setContent (rules);
244
+ instance->rules ->append (parser.rules ());
240
245
}
241
246
242
247
qInstallMessageHandler (&LogManager::messageHandler);
0 commit comments