Add Command to Set Logging/Filter Rules at Runtime (#4637)

Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
This commit is contained in:
nerix 2023-05-17 23:32:50 +02:00 committed by GitHub
parent ce47d27d41
commit 347f216abf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 67 additions and 0 deletions

View file

@ -2,6 +2,8 @@
## Unversioned
- Dev: Added command to set Qt's logging filter/rules at runtime (`/c2-set-logging-rules`). (#4637)
## 2.4.4
- Minor: Added a Send button in the input box so you can click to send a message. This is disabled by default and can be enabled with the "Show send message button" setting. (#4607)

View file

@ -60,6 +60,8 @@ set(SOURCE_FILES
controllers/accounts/AccountModel.cpp
controllers/accounts/AccountModel.hpp
controllers/commands/builtin/chatterino/Debugging.cpp
controllers/commands/builtin/chatterino/Debugging.hpp
controllers/commands/builtin/twitch/ChatSettings.cpp
controllers/commands/builtin/twitch/ChatSettings.hpp
controllers/commands/builtin/twitch/ShieldMode.cpp

View file

@ -7,6 +7,7 @@
#include "common/QLogging.hpp"
#include "common/SignalVector.hpp"
#include "controllers/accounts/AccountController.hpp"
#include "controllers/commands/builtin/chatterino/Debugging.hpp"
#include "controllers/commands/builtin/twitch/ChatSettings.hpp"
#include "controllers/commands/builtin/twitch/ShieldMode.hpp"
#include "controllers/commands/Command.hpp"
@ -3211,6 +3212,8 @@ void CommandController::initialize(Settings &, Paths &paths)
this->registerCommand("/shield", &commands::shieldModeOn);
this->registerCommand("/shieldoff", &commands::shieldModeOff);
this->registerCommand("/c2-set-logging-rules", &commands::setLoggingRules);
}
void CommandController::save()

View file

@ -0,0 +1,45 @@
#include "controllers/commands/builtin/chatterino/Debugging.hpp"
#include "common/Channel.hpp"
#include "controllers/commands/CommandContext.hpp"
#include "messages/MessageBuilder.hpp"
#include <QLoggingCategory>
#include <QString>
namespace chatterino::commands {
QString setLoggingRules(const CommandContext &ctx)
{
if (ctx.words.size() < 2)
{
ctx.channel->addMessage(makeSystemMessage(
"Usage: /c2-set-logging-rules <rules...>. To enable debug logging "
"for all categories from chatterino, use "
"'chatterino.*.debug=true'. For the format on the rules, see "
"https://doc.qt.io/qt-6/"
"qloggingcategory.html#configuring-categories"));
return {};
}
auto filterRules = ctx.words.mid(1).join('\n');
QLoggingCategory::setFilterRules(filterRules);
auto message =
QStringLiteral("Updated filter rules to '%1'.").arg(filterRules);
if (!qgetenv("QT_LOGGING_RULES").isEmpty())
{
message += QStringLiteral(
" Warning: Logging rules were previously set by the "
"QT_LOGGING_RULES environment variable. This might cause "
"interference - see: "
"https://doc.qt.io/qt-6/qloggingcategory.html#setFilterRules");
}
ctx.channel->addMessage(makeSystemMessage(message));
return {};
}
} // namespace chatterino::commands

View file

@ -0,0 +1,15 @@
#pragma once
class QString;
namespace chatterino {
struct CommandContext;
} // namespace chatterino
namespace chatterino::commands {
QString setLoggingRules(const CommandContext &ctx);
} // namespace chatterino::commands