diff --git a/libguh-core/awsconnector.cpp b/libguh-core/awsconnector.cpp index ba53d218..9c31b450 100644 --- a/libguh-core/awsconnector.cpp +++ b/libguh-core/awsconnector.cpp @@ -118,7 +118,7 @@ quint16 AWSConnector::publish(const QString &topic, const QVariantMap &message) uint16_t packetId = 0; ResponseCode res = m_client->PublishAsync(Utf8String::Create(fullTopic.toStdString()), false, false, mqtt::QoS::QOS1, jsonDoc.toJson().toStdString(), &publishCallback, packetId); - qCDebug(dcAWS()) << "publish call queued with status:" << QString::fromStdString(ResponseHelper::ToString(res)) << packetId << "for topic" << topic << jsonDoc.toJson(); + qCDebug(dcAWSTraffic()) << "publish call queued with status:" << QString::fromStdString(ResponseHelper::ToString(res)) << packetId << "for topic" << topic << jsonDoc.toJson(); s_requestMap.insert(packetId, this); return packetId; } @@ -163,14 +163,14 @@ void AWSConnector::doSubscribe(const QStringList &topics) { util::Vector> subscription_list; foreach (const QString &topic, topics) { - qCDebug(dcAWS()) << "topic to subscribe is" << topic << "is valid topic:" << Subscription::IsValidTopicName(topic.toStdString()); + qCDebug(dcAWSTraffic()) << "topic to subscribe is" << topic << "is valid topic:" << Subscription::IsValidTopicName(topic.toStdString()); auto subscription = mqtt::Subscription::Create(Utf8String::Create(topic.toStdString()), mqtt::QoS::QOS1, &onSubscriptionReceivedCallback, std::shared_ptr(this)); subscription_list.push_back(subscription); } uint16_t packetId; ResponseCode res = m_client->SubscribeAsync(subscription_list, subscribeCallback, packetId); - qCDebug(dcAWS()) << "subscribe call queued with status:" << QString::fromStdString(ResponseHelper::ToString(res)) << packetId; + qCDebug(dcAWSTraffic()) << "subscribe call queued with status:" << QString::fromStdString(ResponseHelper::ToString(res)) << packetId; s_requestMap.insert(packetId, this); } @@ -184,7 +184,7 @@ void AWSConnector::publishCallback(uint16_t actionId, ResponseCode rc) switch (rc) { case ResponseCode::SUCCESS: - qCDebug(dcAWS()) << "Successfully published" << actionId; + qCDebug(dcAWSTraffic()) << "Successfully published" << actionId; break; default: qCDebug(dcAWS())<< "Error publishing data to AWS:" << QString::fromStdString(ResponseHelper::ToString(rc)); diff --git a/libguh-core/jsonrpc/jsonrpcserver.cpp b/libguh-core/jsonrpc/jsonrpcserver.cpp index 5d0bf3b5..010e1f19 100644 --- a/libguh-core/jsonrpc/jsonrpcserver.cpp +++ b/libguh-core/jsonrpc/jsonrpcserver.cpp @@ -310,7 +310,9 @@ void JsonRPCServer::sendResponse(TransportInterface *interface, const QUuid &cli response.insert("status", "success"); response.insert("params", params); - interface->sendData(clientId, QJsonDocument::fromVariant(response).toJson(QJsonDocument::Compact)); + QByteArray data = QJsonDocument::fromVariant(response).toJson(QJsonDocument::Compact); + qCDebug(dcJsonRpcTraffic()) << "Sending data:" << data; + interface->sendData(clientId, data); } /*! Send a JSON error response to the client with the given \a clientId, @@ -323,7 +325,9 @@ void JsonRPCServer::sendErrorResponse(TransportInterface *interface, const QUuid errorResponse.insert("status", "error"); errorResponse.insert("error", error); - interface->sendData(clientId, QJsonDocument::fromVariant(errorResponse).toJson(QJsonDocument::Compact)); + QByteArray data = QJsonDocument::fromVariant(errorResponse).toJson(QJsonDocument::Compact); + qCDebug(dcJsonRpcTraffic()) << "Sending data:" << data; + interface->sendData(clientId, data); } void JsonRPCServer::sendUnauthorizedResponse(TransportInterface *interface, const QUuid &clientId, int commandId, const QString &error) @@ -333,7 +337,9 @@ void JsonRPCServer::sendUnauthorizedResponse(TransportInterface *interface, cons errorResponse.insert("status", "unauthorized"); errorResponse.insert("error", error); - interface->sendData(clientId, QJsonDocument::fromVariant(errorResponse).toJson(QJsonDocument::Compact)); + QByteArray data = QJsonDocument::fromVariant(errorResponse).toJson(QJsonDocument::Compact); + qCDebug(dcJsonRpcTraffic()) << "Sending data:" << data; + interface->sendData(clientId, data); } QVariantMap JsonRPCServer::createWelcomeMessage(TransportInterface *interface) const @@ -368,6 +374,8 @@ void JsonRPCServer::setup() void JsonRPCServer::processData(const QUuid &clientId, const QByteArray &data) { + qCDebug(dcJsonRpcTraffic()) << "Incoming data:" << data; + TransportInterface *interface = qobject_cast(sender()); QJsonParseError error; QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &error); diff --git a/libguh-core/ruleengine.cpp b/libguh-core/ruleengine.cpp index a7653d1f..9235e356 100644 --- a/libguh-core/ruleengine.cpp +++ b/libguh-core/ruleengine.cpp @@ -335,7 +335,7 @@ QList RuleEngine::evaluateEvent(const Event &event) { Device *device = GuhCore::instance()->deviceManager()->findConfiguredDevice(event.deviceId()); - qCDebug(dcRuleEngine) << "Evaluate event:" << event << device->name() << event.eventTypeId(); + qCDebug(dcRuleEngineDebug) << "Evaluate event:" << event << device->name() << event.eventTypeId(); QList rules; foreach (const RuleId &id, ruleIds()) { diff --git a/libguh-core/websocketserver.cpp b/libguh-core/websocketserver.cpp index f143d6ad..b1d31d82 100644 --- a/libguh-core/websocketserver.cpp +++ b/libguh-core/websocketserver.cpp @@ -91,7 +91,7 @@ void WebSocketServer::sendData(const QUuid &clientId, const QByteArray &data) QWebSocket *client = 0; client = m_clientList.value(clientId); if (client) { - qCDebug(dcWebSocketServer()) << "Sending data to client" << data; + qCDebug(dcWebSocketServerTraffic()) << "Sending data to client" << data; client->sendTextMessage(data + '\n'); } } @@ -146,13 +146,13 @@ void WebSocketServer::onClientDisconnected() void WebSocketServer::onBinaryMessageReceived(const QByteArray &data) { QWebSocket *client = qobject_cast(sender()); - qCDebug(dcWebSocketServer) << "Binary message from" << client->peerAddress().toString() << ":" << data; + qCDebug(dcWebSocketServerTraffic()) << "Binary message from" << client->peerAddress().toString() << ":" << data; } void WebSocketServer::onTextMessageReceived(const QString &message) { QWebSocket *client = qobject_cast(sender()); - qCDebug(dcWebSocketServer) << "Text message from" << client->peerAddress().toString() << ":" << message; + qCDebug(dcWebSocketServerTraffic()) << "Text message from" << client->peerAddress().toString() << ":" << message; emit dataAvailable(m_clientList.key(client), message.toUtf8()); } diff --git a/libguh/loggingcategories.cpp b/libguh/loggingcategories.cpp index eea3cf74..bcb451ea 100644 --- a/libguh/loggingcategories.cpp +++ b/libguh/loggingcategories.cpp @@ -26,13 +26,17 @@ Q_LOGGING_CATEGORY(dcApplication, "Application") Q_LOGGING_CATEGORY(dcDeviceManager, "DeviceManager") Q_LOGGING_CATEGORY(dcTimeManager, "TimeManager") Q_LOGGING_CATEGORY(dcRuleEngine, "RuleEngine") +Q_LOGGING_CATEGORY(dcRuleEngineDebug, "RuleEngineDebug") Q_LOGGING_CATEGORY(dcHardware, "Hardware") Q_LOGGING_CATEGORY(dcConnection, "Connection") Q_LOGGING_CATEGORY(dcLogEngine, "LogEngine") Q_LOGGING_CATEGORY(dcTcpServer, "TcpServer") +Q_LOGGING_CATEGORY(dcTcpServerTraffic, "TcpServerTraffic") Q_LOGGING_CATEGORY(dcWebServer, "WebServer") Q_LOGGING_CATEGORY(dcWebSocketServer, "WebSocketServer") +Q_LOGGING_CATEGORY(dcWebSocketServerTraffic, "WebSocketServerTraffic") Q_LOGGING_CATEGORY(dcJsonRpc, "JsonRpc") +Q_LOGGING_CATEGORY(dcJsonRpcTraffic, "JsonRpcTraffic") Q_LOGGING_CATEGORY(dcRest, "Rest") Q_LOGGING_CATEGORY(dcOAuth2, "OAuth2") Q_LOGGING_CATEGORY(dcAvahi, "Avahi") @@ -40,4 +44,6 @@ Q_LOGGING_CATEGORY(dcCloud, "Cloud") Q_LOGGING_CATEGORY(dcNetworkManager, "NetworkManager") Q_LOGGING_CATEGORY(dcUserManager, "UserManager") Q_LOGGING_CATEGORY(dcAWS, "AWS") +Q_LOGGING_CATEGORY(dcAWSTraffic, "AWSTraffic") Q_LOGGING_CATEGORY(dcJanus, "Janus") +Q_LOGGING_CATEGORY(dcJanusTraffic, "JanusTraffic") diff --git a/libguh/loggingcategories.h b/libguh/loggingcategories.h index e438bc48..b68a5c21 100644 --- a/libguh/loggingcategories.h +++ b/libguh/loggingcategories.h @@ -34,13 +34,17 @@ Q_DECLARE_LOGGING_CATEGORY(dcApplication) Q_DECLARE_LOGGING_CATEGORY(dcDeviceManager) Q_DECLARE_LOGGING_CATEGORY(dcTimeManager) Q_DECLARE_LOGGING_CATEGORY(dcRuleEngine) +Q_DECLARE_LOGGING_CATEGORY(dcRuleEngineDebug) Q_DECLARE_LOGGING_CATEGORY(dcHardware) Q_DECLARE_LOGGING_CATEGORY(dcConnection) Q_DECLARE_LOGGING_CATEGORY(dcLogEngine) Q_DECLARE_LOGGING_CATEGORY(dcTcpServer) +Q_DECLARE_LOGGING_CATEGORY(dcTcpServerTraffic) Q_DECLARE_LOGGING_CATEGORY(dcWebServer) Q_DECLARE_LOGGING_CATEGORY(dcWebSocketServer) +Q_DECLARE_LOGGING_CATEGORY(dcWebSocketServerTraffic) Q_DECLARE_LOGGING_CATEGORY(dcJsonRpc) +Q_DECLARE_LOGGING_CATEGORY(dcJsonRpcTraffic) Q_DECLARE_LOGGING_CATEGORY(dcRest) Q_DECLARE_LOGGING_CATEGORY(dcOAuth2) Q_DECLARE_LOGGING_CATEGORY(dcAvahi) @@ -48,6 +52,8 @@ Q_DECLARE_LOGGING_CATEGORY(dcCloud) Q_DECLARE_LOGGING_CATEGORY(dcNetworkManager) Q_DECLARE_LOGGING_CATEGORY(dcUserManager) Q_DECLARE_LOGGING_CATEGORY(dcAWS) +Q_DECLARE_LOGGING_CATEGORY(dcAWSTraffic) Q_DECLARE_LOGGING_CATEGORY(dcJanus) +Q_DECLARE_LOGGING_CATEGORY(dcJanusTraffic) #endif // LOGGINGCATEGORYS_H diff --git a/server/main.cpp b/server/main.cpp index 4c7a0544..007ce014 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -112,12 +112,15 @@ int main(int argc, char *argv[]) s_loggingFilters.insert("Warnings", true); s_loggingFilters.insert("DeviceManager", true); s_loggingFilters.insert("RuleEngine", true); + s_loggingFilters.insert("RuleEngineDebug", false); s_loggingFilters.insert("Hardware", false); s_loggingFilters.insert("Connection", true); s_loggingFilters.insert("LogEngine", false); s_loggingFilters.insert("TcpServer", false); + s_loggingFilters.insert("TcpServerTraffic", false); s_loggingFilters.insert("WebServer", false); s_loggingFilters.insert("WebSocketServer", false); + s_loggingFilters.insert("WebSocketServerTraffic", false); s_loggingFilters.insert("JsonRpc", false); s_loggingFilters.insert("Rest", false); s_loggingFilters.insert("OAuth2", false); @@ -128,7 +131,8 @@ int main(int argc, char *argv[]) s_loggingFilters.insert("NetworkManager", true); s_loggingFilters.insert("UserManager", true); s_loggingFilters.insert("AWS", false); - s_loggingFilters.insert("Janus", false); + s_loggingFilters.insert("AWSTraffic", false); + s_loggingFilters.insert("JanusTraffic", false); QHash loggingFiltersPlugins; foreach (const QJsonObject &pluginMetadata, DeviceManager::pluginsMetadata()) { @@ -211,20 +215,20 @@ int main(int argc, char *argv[]) s_loggingFilters.insert(category, false); // check debug area - if (!parser.isSet(allOption)) { - foreach (QString debugArea, parser.values(debugOption)) { - bool enable = !debugArea.startsWith("No"); - debugArea.remove(QRegExp("^No")); - if (s_loggingFilters.contains(debugArea)) { - s_loggingFilters[debugArea] = enable; - } else { - qCWarning(dcApplication) << QCoreApplication::translate("main", "No such debug category:") << debugArea; - } - } - } else { - foreach (const QString &debugArea, s_loggingFilters.keys()) + if (parser.isSet(allOption)) { + foreach (const QString &debugArea, s_loggingFilters.keys()) { s_loggingFilters[debugArea] = true; - + } + } + // And allow overriding individual values + foreach (QString debugArea, parser.values(debugOption)) { + bool enable = !debugArea.startsWith("No"); + debugArea.remove(QRegExp("^No")); + if (s_loggingFilters.contains(debugArea)) { + s_loggingFilters[debugArea] = enable; + } else { + qCWarning(dcApplication) << QCoreApplication::translate("main", "No such debug category:") << debugArea; + } } QLoggingCategory::installFilter(loggingCategoryFilter); diff --git a/translations/guhd-de_DE.ts b/translations/guhd-de_DE.ts index 1e7c5362..2cc2a83b 100644 --- a/translations/guhd-de_DE.ts +++ b/translations/guhd-de_DE.ts @@ -4,7 +4,7 @@ main - + guh ( /[guːh]/ ) is an open source IoT (Internet of Things) server, which allows to control a lot of different devices from many different @@ -23,12 +23,12 @@ Szenen undVerhaltensweisen des Systems festzulegen. - + Run guhd in the foreground, not as daemon. Starte guhd im Vordergrund, nicht als Service. - + Debug categories to enable. Prefix with "No" to disable. Warnings from all categories will be printed unless explicitly muted with "NoWarnings". Categories are: @@ -36,17 +36,17 @@ Categories are: Es gibt folgende Kategorien: - + Enables all debug categories. This parameter overrides all debug category parameters. Aktiviere alle Debug-Kategorien. Dieser Parameter überschreibt alle anderen Debug-Kategorien Parameter. - + Specify a log file to write to, If this option is not specified, logs will be printed to the standard output. - + No such debug category: Diese Debug-Kategorie existiert nicht: diff --git a/translations/guhd-en_US.ts b/translations/guhd-en_US.ts index fc03f892..c4f9c90c 100644 --- a/translations/guhd-en_US.ts +++ b/translations/guhd-en_US.ts @@ -4,7 +4,7 @@ main - + guh ( /[guːh]/ ) is an open source IoT (Internet of Things) server, which allows to control a lot of different devices from many different @@ -23,12 +23,12 @@ for your environment. - + Run guhd in the foreground, not as daemon. Run guhd in the foreground, not as daemon. - + Debug categories to enable. Prefix with "No" to disable. Warnings from all categories will be printed unless explicitly muted with "NoWarnings". Categories are: @@ -37,17 +37,17 @@ Categories are: Categories are: - + Enables all debug categories. This parameter overrides all debug category parameters. Enables all debug categories. This parameter overrides all debug category parameters. - + Specify a log file to write to, If this option is not specified, logs will be printed to the standard output. - + No such debug category: No such debug category: