10 #include <QLoggingCategory> 17 QHash<QLoggingCategory*, QList<QtMsgType>>
Disabled_ {};
25 ContextStack_.push_back ({ .ToDisable_ = cats });
26 ContextStack_.back ().PreviousFilter_ = QLoggingCategory::installFilter (&Filter);
31 const auto& context = ContextStack_.takeLast ();
32 for (
const auto& [cat, levels] : context.Disabled_.asKeyValueRange ())
33 for (
const auto level : levels)
34 cat->setEnabled (level,
true);
36 QLoggingCategory::installFilter (context.PreviousFilter_);
39 void LoggingFilter::Filter (QLoggingCategory *category)
41 auto& context = ContextStack_.back ();
43 if (context.PreviousFilter_)
44 context.PreviousFilter_ (category);
46 for (
const auto level : context.ToDisable_.value (QLatin1String { category->categoryName () }))
47 if (category->isEnabled (level))
49 category->setEnabled (level,
false);
50 context.Disabled_ [category] << level;
QHash< QLoggingCategory *, QList< QtMsgType > > Disabled_
LoggingFilter(const Categories &cats)
QLoggingCategory::CategoryFilter PreviousFilter_
QHash< QLatin1String, QList< QtMsgType > > Categories