From b198681311212db9c688a993b336b188ef721d8a Mon Sep 17 00:00:00 2001 From: sithlord48 Date: Fri, 8 May 2026 20:27:37 -0400 Subject: [PATCH] refactor(log): Remove LOG_NOTE, use LOG_INFO for all previous notes BREAKING_CHANGE: LOG Levels maybe wrong when starting the app --- src/apps/deskflow-daemon/DaemonApp.cpp | 2 +- src/lib/arch/unix/ArchLogUnix.cpp | 4 ---- src/lib/base/Log.cpp | 4 ++-- src/lib/base/Log.h | 11 ++++------- src/lib/base/LogLevel.h | 1 - src/lib/client/Client.cpp | 6 +++--- src/lib/client/ServerProxy.cpp | 2 +- src/lib/common/Settings.h | 1 - src/lib/deskflow/App.cpp | 2 +- src/lib/deskflow/ClientApp.cpp | 6 +++--- src/lib/deskflow/ServerApp.cpp | 4 ++-- src/lib/gui/dialogs/SettingsDialog.cpp | 13 ++++++------- src/lib/gui/dialogs/SettingsDialog.ui | 5 ----- src/lib/server/ClientListener.cpp | 2 +- src/lib/server/ClientProxyUnknown.cpp | 6 +++--- src/lib/server/Server.cpp | 18 +++++++++--------- src/unittests/base/LogTests.cpp | 2 +- src/unittests/common/SettingsTests.cpp | 9 ++++----- translations/deskflow_es.ts | 8 -------- translations/deskflow_it.ts | 8 -------- translations/deskflow_ja.ts | 8 -------- translations/deskflow_ko.ts | 8 -------- translations/deskflow_ru.ts | 8 -------- translations/deskflow_zh_CN.ts | 8 -------- 24 files changed, 41 insertions(+), 105 deletions(-) diff --git a/src/apps/deskflow-daemon/DaemonApp.cpp b/src/apps/deskflow-daemon/DaemonApp.cpp index 4bb407e00..a4bb3fd14 100644 --- a/src/apps/deskflow-daemon/DaemonApp.cpp +++ b/src/apps/deskflow-daemon/DaemonApp.cpp @@ -144,7 +144,7 @@ void DaemonApp::connectIpcServer(const ipc::DaemonIpcServer *ipcServer) const void DaemonApp::run(QThread &daemonThread) { - LOG_NOTE("starting daemon"); + LOG_INFO("starting daemon"); // Important: Move the daemon app to the daemon thread before creating any more Qt objects // owned by the daemon app, as they will be created on the daemon thread. diff --git a/src/lib/arch/unix/ArchLogUnix.cpp b/src/lib/arch/unix/ArchLogUnix.cpp index b93a65149..744a78b01 100644 --- a/src/lib/arch/unix/ArchLogUnix.cpp +++ b/src/lib/arch/unix/ArchLogUnix.cpp @@ -37,10 +37,6 @@ void ArchLogUnix::writeLog(LogLevel level, const QString &msg) priority = LOG_WARNING; break; - case Note: - priority = LOG_NOTICE; - break; - case Info: priority = LOG_INFO; break; diff --git a/src/lib/base/Log.cpp b/src/lib/base/Log.cpp index fe4d806b2..7abbe3e68 100644 --- a/src/lib/base/Log.cpp +++ b/src/lib/base/Log.cpp @@ -24,10 +24,10 @@ const int kPriorityPrefixLength = 3; // names of priorities -static const char *g_priority[] = {"FATAL", "ERROR", "WARNING", "NOTE", "INFO", "DEBUG", "DEBUG1", "DEBUG2"}; +static const char *g_priority[] = {"FATAL", "ERROR", "WARNING", "INFO", "DEBUG", "DEBUG1", "DEBUG2"}; // number of priorities -static const int g_numPriority = 8; +static const int g_numPriority = 7; // if NDEBUG (not debug) is not specified, i.e. you're building in debug, // then set default log level to DEBUG, otherwise the max level is INFO. diff --git a/src/lib/base/Log.h b/src/lib/base/Log.h index df6c15d84..20717ed5b 100644 --- a/src/lib/base/Log.h +++ b/src/lib/base/Log.h @@ -205,17 +205,15 @@ otherwise it expands to a call that doesn't. #define CLOG_TAG_CRIT "%z\060" // char is '0' #define CLOG_TAG_ERR "%z\061" #define CLOG_TAG_WARN "%z\062" -#define CLOG_TAG_NOTE "%z\063" -#define CLOG_TAG_INFO "%z\064" -#define CLOG_TAG_DEBUG "%z\065" -#define CLOG_TAG_DEBUG1 "%z\066" -#define CLOG_TAG_DEBUG2 "%z\067" +#define CLOG_TAG_INFO "%z\063" +#define CLOG_TAG_DEBUG "%z\064" +#define CLOG_TAG_DEBUG1 "%z\065" +#define CLOG_TAG_DEBUG2 "%z\066" #define CLOG_PRINT CLOG_TRACE CLOG_TAG_PRINT #define CLOG_CRIT CLOG_TRACE CLOG_TAG_CRIT #define CLOG_ERR CLOG_TRACE CLOG_TAG_ERR #define CLOG_WARN CLOG_TRACE CLOG_TAG_WARN -#define CLOG_NOTE CLOG_TRACE CLOG_TAG_NOTE #define CLOG_INFO CLOG_TRACE CLOG_TAG_INFO #define CLOG_DEBUG CLOG_TRACE CLOG_TAG_DEBUG #define CLOG_DEBUG1 CLOG_TRACE CLOG_TAG_DEBUG1 @@ -225,7 +223,6 @@ otherwise it expands to a call that doesn't. #define LOG_CRIT(...) LOG((CLOG_CRIT __VA_ARGS__)) #define LOG_ERR(...) LOG((CLOG_ERR __VA_ARGS__)) #define LOG_WARN(...) LOG((CLOG_WARN __VA_ARGS__)) -#define LOG_NOTE(...) LOG((CLOG_NOTE __VA_ARGS__)) #define LOG_INFO(...) LOG((CLOG_INFO __VA_ARGS__)) #define LOG_DEBUG(...) LOG((CLOG_DEBUG __VA_ARGS__)) #define LOG_DEBUG1(...) LOG((CLOG_DEBUG1 __VA_ARGS__)) diff --git a/src/lib/base/LogLevel.h b/src/lib/base/LogLevel.h index 02313304c..5751738fb 100644 --- a/src/lib/base/LogLevel.h +++ b/src/lib/base/LogLevel.h @@ -17,7 +17,6 @@ enum class LogLevel Fatal, //!< For fatal errors Error, //!< For serious errors Warning, //!< For minor errors and warnings - Note, //!< For messages about notable events Info, //!< For informational messages Debug, //!< For important debugging messages Debug1, //!< For verbosity +1 debugging messages diff --git a/src/lib/client/Client.cpp b/src/lib/client/Client.cpp index 871f66acd..e300f654d 100644 --- a/src/lib/client/Client.cpp +++ b/src/lib/client/Client.cpp @@ -294,7 +294,7 @@ void Client::setOptions(const OptionsList &options) index++; if (index != options.end()) { if (!*index) { - LOG_NOTE("clipboard sharing disabled by server"); + LOG_INFO("clipboard sharing disabled by server"); } m_enableClipboard = *index; } @@ -308,7 +308,7 @@ void Client::setOptions(const OptionsList &options) if (m_enableClipboard && !m_maximumClipboardSize) { m_enableClipboard = false; - LOG_NOTE("clipboard sharing is disabled because the server set the maximum clipboard size to 0"); + LOG_INFO("clipboard sharing is disabled because the server set the maximum clipboard size to 0"); } m_screen->setOptions(options); @@ -341,7 +341,7 @@ void Client::sendClipboard(ClipboardID id) std::string data = clipboard.marshall(); if (data.size() >= m_maximumClipboardSize * 1024) { LOG( - (CLOG_NOTE "skipping clipboard transfer because the clipboard" + (CLOG_INFO "skipping clipboard transfer because the clipboard" " contents exceeds the %i MB size limit set by the server", m_maximumClipboardSize / 1024) ); diff --git a/src/lib/client/ServerProxy.cpp b/src/lib/client/ServerProxy.cpp index a04aa35e2..10afcca36 100644 --- a/src/lib/client/ServerProxy.cpp +++ b/src/lib/client/ServerProxy.cpp @@ -335,7 +335,7 @@ ServerProxy::ConnectionResult ServerProxy::parseMessage(const uint8_t *code) void ServerProxy::handleKeepAliveAlarm() { - LOG_NOTE("server is dead"); + LOG_INFO("server is dead"); m_client->disconnect("server is not responding"); } diff --git a/src/lib/common/Settings.h b/src/lib/common/Settings.h index c72d18471..ab23dffde 100644 --- a/src/lib/common/Settings.h +++ b/src/lib/common/Settings.h @@ -194,7 +194,6 @@ private: QStringLiteral("FATAL") , QStringLiteral("ERROR") , QStringLiteral("WARNING") - , QStringLiteral("NOTE") , QStringLiteral("INFO") , QStringLiteral("DEBUG") , QStringLiteral("DEBUG1") diff --git a/src/lib/deskflow/App.cpp b/src/lib/deskflow/App.cpp index f0eb1be6f..b58845247 100644 --- a/src/lib/deskflow/App.cpp +++ b/src/lib/deskflow/App.cpp @@ -58,7 +58,7 @@ App::~App() void App::run(QThread &coreThread) { - LOG_NOTE("starting core"); + LOG_INFO("starting core"); // Important: Move the daemon app to the daemon thread before creating any more Qt objects // owned by the daemon app, as they will be created on the daemon thread. diff --git a/src/lib/deskflow/ClientApp.cpp b/src/lib/deskflow/ClientApp.cpp index 00d466b77..df4f76035 100644 --- a/src/lib/deskflow/ClientApp.cpp +++ b/src/lib/deskflow/ClientApp.cpp @@ -87,7 +87,7 @@ void ClientApp::parseArgs() bye(s_exitFailed); } - LOG_NOTE("configured %zu server address(es)", static_cast(m_serverAddresses.size())); + LOG_INFO("configured %zu server address(es)", static_cast(m_serverAddresses.size())); } } @@ -280,7 +280,7 @@ bool ClientApp::startClient() clientScreen ); m_clientScreen = clientScreen; - LOG_NOTE("started client"); + LOG_INFO("started client"); } m_client->setServerAddress(getCurrentServerAddress()); @@ -332,7 +332,7 @@ int ClientApp::mainLoop() // close down LOG_DEBUG("stopping client"); stopClient(); - LOG_NOTE("stopped client"); + LOG_INFO("stopped client"); return exitCode; } diff --git a/src/lib/deskflow/ServerApp.cpp b/src/lib/deskflow/ServerApp.cpp index d5caf7a03..cf6afd2bb 100644 --- a/src/lib/deskflow/ServerApp.cpp +++ b/src/lib/deskflow/ServerApp.cpp @@ -90,7 +90,7 @@ void ServerApp::reloadConfig() if (m_server != nullptr) { m_server->setConfig(*m_config); } - LOG_NOTE("reloaded configuration"); + LOG_INFO("reloaded configuration"); } } @@ -546,7 +546,7 @@ int ServerApp::mainLoop() getEvents()->removeHandler(EventTypes::ServerAppForceReconnect, getEvents()->getSystemTarget()); getEvents()->removeHandler(EventTypes::ServerAppReloadConfig, getEvents()->getSystemTarget()); cleanupServer(); - LOG_NOTE("stopped server"); + LOG_INFO("stopped server"); return exitCode; } diff --git a/src/lib/gui/dialogs/SettingsDialog.cpp b/src/lib/gui/dialogs/SettingsDialog.cpp index b18623b4e..a5d7ab4e2 100644 --- a/src/lib/gui/dialogs/SettingsDialog.cpp +++ b/src/lib/gui/dialogs/SettingsDialog.cpp @@ -203,11 +203,10 @@ void SettingsDialog::updateText() ui->comboLogLevel->setItemData(0, tr("Required messages"), Qt::ToolTipRole); ui->comboLogLevel->setItemData(1, tr("Non-fatal errors"), Qt::ToolTipRole); ui->comboLogLevel->setItemData(2, tr("General warnings"), Qt::ToolTipRole); - ui->comboLogLevel->setItemData(3, tr("Notable events"), Qt::ToolTipRole); - ui->comboLogLevel->setItemData(4, tr("General events [Default]"), Qt::ToolTipRole); - ui->comboLogLevel->setItemData(5, tr("Debug entries"), Qt::ToolTipRole); - ui->comboLogLevel->setItemData(6, tr("More debug output"), Qt::ToolTipRole); - ui->comboLogLevel->setItemData(7, tr("Verbose debug output"), Qt::ToolTipRole); + ui->comboLogLevel->setItemData(3, tr("General events [Default]"), Qt::ToolTipRole); + ui->comboLogLevel->setItemData(4, tr("Debug entries"), Qt::ToolTipRole); + ui->comboLogLevel->setItemData(5, tr("More debug output"), Qt::ToolTipRole); + ui->comboLogLevel->setItemData(6, tr("Verbose debug output"), Qt::ToolTipRole); ui->buttonBox->button(QDialogButtonBox::Save)->setToolTip(tr("Close and save changes")); ui->buttonBox->button(QDialogButtonBox::Cancel)->setToolTip(tr("Close and forget changes")); ui->buttonBox->button(QDialogButtonBox::Reset)->setToolTip(tr("Reset to stored values")); @@ -286,7 +285,7 @@ void SettingsDialog::loadFromConfig() ui->rbCloseToTray->setChecked(closeToTray); ui->rbExitOnClose->setChecked(!closeToTray); - ui->lblDebugWarning->setVisible(Settings::value(Settings::Log::Level).toInt() > 4); + ui->lblDebugWarning->setVisible(Settings::value(Settings::Log::Level).toInt() > 3); ui->comboInterface->setCurrentText(Settings::value(Settings::Core::Interface).toString()); if (ui->comboInterface->currentIndex() <= 0) { @@ -411,7 +410,7 @@ void SettingsDialog::updateRequestedKeySize() const void SettingsDialog::logLevelChanged() { - ui->lblDebugWarning->setVisible(ui->comboLogLevel->currentIndex() > 4); + ui->lblDebugWarning->setVisible(ui->comboLogLevel->currentIndex() > 3); } bool SettingsDialog::isModified() const diff --git a/src/lib/gui/dialogs/SettingsDialog.ui b/src/lib/gui/dialogs/SettingsDialog.ui index d2824965f..0e53615ee 100644 --- a/src/lib/gui/dialogs/SettingsDialog.ui +++ b/src/lib/gui/dialogs/SettingsDialog.ui @@ -316,11 +316,6 @@ Warning - - - Note - - Info diff --git a/src/lib/server/ClientListener.cpp b/src/lib/server/ClientListener.cpp index 679ed9f26..80d54b42b 100644 --- a/src/lib/server/ClientListener.cpp +++ b/src/lib/server/ClientListener.cpp @@ -155,7 +155,7 @@ void ClientListener::handleClientConnecting() void ClientListener::handleClientAccepted(IDataSocket *socket) { - LOG_NOTE("accepted client connection"); + LOG_INFO("accepted client connection"); // filter socket messages, including a packetizing filter deskflow::IStream *stream = new PacketStreamFilter(m_events, socket, false); diff --git a/src/lib/server/ClientProxyUnknown.cpp b/src/lib/server/ClientProxyUnknown.cpp index ee571f361..ca6dc5dfe 100644 --- a/src/lib/server/ClientProxyUnknown.cpp +++ b/src/lib/server/ClientProxyUnknown.cpp @@ -245,18 +245,18 @@ void ClientProxyUnknown::handleData() void ClientProxyUnknown::handleWriteError() { - LOG_NOTE("error communicating with new client"); + LOG_INFO("error communicating with new client"); sendFailure(); } void ClientProxyUnknown::handleTimeout() { - LOG_NOTE("new client is unresponsive"); + LOG_INFO("new client is unresponsive"); sendFailure(); } void ClientProxyUnknown::handleDisconnect() { - LOG_NOTE("new client disconnected"); + LOG_INFO("new client disconnected"); sendFailure(); } diff --git a/src/lib/server/Server.cpp b/src/lib/server/Server.cpp index b61afa6bd..49972c9d0 100644 --- a/src/lib/server/Server.cpp +++ b/src/lib/server/Server.cpp @@ -133,10 +133,10 @@ Server::Server(ServerConfig &config, PrimaryClient *primaryClient, deskflow::Scr // Determine if scroll lock is already set. If so, lock the cursor to the // primary screen (unless the user has disabled lock to screen in config) if (!m_disableLockToScreen && (m_primaryClient->getToggleMask() & KeyModifierScrollLock)) { - LOG_NOTE("scroll lock is on, locking cursor to screen"); + LOG_INFO("scroll lock is on, locking cursor to screen"); m_lockedToScreen = true; } else if (m_defaultLockToScreenState) { - LOG_NOTE("default screen lock is on, locking cursor to screen"); + LOG_INFO("default screen lock is on, locking cursor to screen"); m_lockedToScreen = true; } } @@ -353,7 +353,7 @@ bool Server::isLockedToScreen() const // locked if we say we're locked if (isLockedToScreenServer()) { if (!m_defaultLockToScreenState) { - LOG_NOTE("cursor is locked to screen, check scroll lock key"); + LOG_INFO("cursor is locked to screen, check scroll lock key"); } return true; } @@ -1112,12 +1112,12 @@ void Server::processOptions() } else if (id == kOptionClipboardSharing) { m_enableClipboard = value; if (!m_enableClipboard) { - LOG_NOTE("clipboard sharing is disabled"); + LOG_INFO("clipboard sharing is disabled"); } } else if (id == kOptionClipboardSharingSize) { if (value <= 0) { m_maximumClipboardSize = 0; - LOG_NOTE( + LOG_INFO( "clipboard sharing is disabled because the " "maximum shared clipboard size is set to 0" ); @@ -1308,7 +1308,7 @@ void Server::handleClientDisconnected(BaseClientProxy *client) void Server::handleClientCloseTimeout(BaseClientProxy *client) { // client took too long to disconnect. just dump it. - LOG_NOTE("forced disconnection of client \"%s\"", getName(client).c_str()); + LOG_INFO("forced disconnection of client \"%s\"", getName(client).c_str()); removeOldClient(client); delete client; @@ -1432,7 +1432,7 @@ void Server::handleLockCursorToScreenEvent(const Event &event) // enter new state if (newState != m_lockedToScreen) { m_lockedToScreen = newState; - LOG_NOTE("cursor %s current screen", m_lockedToScreen ? "locked to" : "unlocked from"); + LOG_INFO("cursor %s current screen", m_lockedToScreen ? "locked to" : "unlocked from"); m_primaryClient->reconfigure(getActivePrimarySides()); if (!isLockedToScreenServer()) { @@ -1459,7 +1459,7 @@ void Server::onClipboardChanged(const BaseClientProxy *sender, ClipboardID id, u std::string data = clipboard.m_clipboard.marshall(); if (data.size() > m_maximumClipboardSize * 1024) { - LOG_NOTE( + LOG_INFO( "not updating clipboard because it's over the size limit (%i KB) configured by the server", m_maximumClipboardSize ); @@ -1961,7 +1961,7 @@ void Server::closeClient(BaseClientProxy *client, const char *msg) // note that this method also works on clients that are not in // the m_clients list. adoptClient() may call us with such a // client. - LOG_NOTE("disconnecting client \"%s\"", getName(client).c_str()); + LOG_INFO("disconnecting client \"%s\"", getName(client).c_str()); // send message // FIXME -- avoid type cast (kinda hard, though) diff --git a/src/unittests/base/LogTests.cpp b/src/unittests/base/LogTests.cpp index b80eebf44..095382673 100644 --- a/src/unittests/base/LogTests.cpp +++ b/src/unittests/base/LogTests.cpp @@ -12,7 +12,7 @@ #define LEVEL_PRINT "%z\057" #define LEVEL_ERR "%z\061" -#define LEVEL_INFO "%z\064" +#define LEVEL_INFO "%z\063" QString sanitizeBuffer(const std::stringstream &in) { diff --git a/src/unittests/common/SettingsTests.cpp b/src/unittests/common/SettingsTests.cpp index b3e60282a..dce606ad7 100644 --- a/src/unittests/common/SettingsTests.cpp +++ b/src/unittests/common/SettingsTests.cpp @@ -106,11 +106,10 @@ void SettingsTests::checkLogLevels_Valid() QCOMPARE(Settings::logLevelToInt(QStringLiteral("Fatal")), 0); QCOMPARE(Settings::logLevelToInt(QStringLiteral("erRor")), 1); QCOMPARE(Settings::logLevelToInt(QStringLiteral("wArning")), 2); - QCOMPARE(Settings::logLevelToInt(QStringLiteral("notE")), 3); - QCOMPARE(Settings::logLevelToInt(QStringLiteral("info")), 4); - QCOMPARE(Settings::logLevelToInt(QStringLiteral("deBug")), 5); - QCOMPARE(Settings::logLevelToInt(QStringLiteral("debuG1")), 6); - QCOMPARE(Settings::logLevelToInt(QStringLiteral("dEbug2")), 7); + QCOMPARE(Settings::logLevelToInt(QStringLiteral("info")), 3); + QCOMPARE(Settings::logLevelToInt(QStringLiteral("deBug")), 4); + QCOMPARE(Settings::logLevelToInt(QStringLiteral("debuG1")), 5); + QCOMPARE(Settings::logLevelToInt(QStringLiteral("dEbug2")), 6); } void SettingsTests::checkLogLevels_Invalid() diff --git a/translations/deskflow_es.ts b/translations/deskflow_es.ts index 69bd87bd7..118f3eaec 100644 --- a/translations/deskflow_es.ts +++ b/translations/deskflow_es.ts @@ -1161,10 +1161,6 @@ Al habilitar esta opción, se deshabilitará la interfaz gráfica de usuario (GU Warning Advertencia - - Note - Nota - Info Información @@ -1209,10 +1205,6 @@ Al habilitar esta opción, se deshabilitará la interfaz gráfica de usuario (GU General warnings Advertencias generales - - Notable events - Eventos notables - General events [Default] Eventos generales [Predeterminado] diff --git a/translations/deskflow_it.ts b/translations/deskflow_it.ts index 06fbf960c..65dce6d37 100644 --- a/translations/deskflow_it.ts +++ b/translations/deskflow_it.ts @@ -1161,10 +1161,6 @@ L'abilitazione di questa impostazione disabiliterà l'interfaccia graf Warning Avviso - - Note - Nota - Info Informazioni @@ -1209,10 +1205,6 @@ L'abilitazione di questa impostazione disabiliterà l'interfaccia graf General warnings Avvisi generali - - Notable events - Eventi importanti - General events [Default] Eventi generali [Predefinito] diff --git a/translations/deskflow_ja.ts b/translations/deskflow_ja.ts index 87591d3bd..b490d19f0 100644 --- a/translations/deskflow_ja.ts +++ b/translations/deskflow_ja.ts @@ -1163,10 +1163,6 @@ Enabling this setting will disable the server config GUI. Warning 警告 - - Note - 通知 - Info 情報 @@ -1235,10 +1231,6 @@ Enabling this setting will disable the server config GUI. General warnings 一般的な警告 - - Notable events - 特筆すべき事象 - General events [Default] 一般的な事象 [既定] diff --git a/translations/deskflow_ko.ts b/translations/deskflow_ko.ts index 13f2320c6..abce50724 100644 --- a/translations/deskflow_ko.ts +++ b/translations/deskflow_ko.ts @@ -1161,10 +1161,6 @@ Enabling this setting will disable the server config GUI. Warning 경고 - - Note - 안내 - Info 정보 @@ -1233,10 +1229,6 @@ Enabling this setting will disable the server config GUI. General warnings 일반 경고 - - Notable events - 주요 이벤트 - General events [Default] 일반 이벤트 [기본값] diff --git a/translations/deskflow_ru.ts b/translations/deskflow_ru.ts index 5488b6bdb..93cf2d871 100644 --- a/translations/deskflow_ru.ts +++ b/translations/deskflow_ru.ts @@ -1159,10 +1159,6 @@ Enabling this setting will disable the server config GUI. Warning Предупреждение - - Note - Примечание - Info Инфо @@ -1235,10 +1231,6 @@ Enabling this setting will disable the server config GUI. General warnings Общие предупреждения - - Notable events - Важные события - General events [Default] Общие события [По умолчанию] diff --git a/translations/deskflow_zh_CN.ts b/translations/deskflow_zh_CN.ts index 781f818d1..0cde14f12 100644 --- a/translations/deskflow_zh_CN.ts +++ b/translations/deskflow_zh_CN.ts @@ -1163,10 +1163,6 @@ Enabling this setting will disable the server config GUI. Warning 警告 - - Note - 注意 - Info 信息 @@ -1235,10 +1231,6 @@ Enabling this setting will disable the server config GUI. General warnings 一般警告 - - Notable events - 值得注意的事件 - General events [Default] 一般事件 [默认]