From e3a094c9a1c003fe9ea6d08e2d8e15708caf26b7 Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 19 Aug 2018 01:28:29 +0200 Subject: [PATCH] SDRdaemon: Web API: implemented logging methods --- sdrdaemon/sdrdaemonmain.h | 2 + sdrdaemon/sdrdaemonparser.cpp | 2 +- sdrdaemon/webapi/webapiadapterdaemon.cpp | 61 +++++++++++++++++++----- 3 files changed, 53 insertions(+), 12 deletions(-) diff --git a/sdrdaemon/sdrdaemonmain.h b/sdrdaemon/sdrdaemonmain.h index 9e2ba4937..0bde35914 100644 --- a/sdrdaemon/sdrdaemonmain.h +++ b/sdrdaemon/sdrdaemonmain.h @@ -51,6 +51,8 @@ public: ~SDRDaemonMain(); static SDRDaemonMain *getInstance() { return m_instance; } // Main Core is de facto a singleton so this just returns its reference + friend class WebAPIAdapterDaemon; + signals: void finished(); diff --git a/sdrdaemon/sdrdaemonparser.cpp b/sdrdaemon/sdrdaemonparser.cpp index 6d9d71fd9..b0c9958ff 100644 --- a/sdrdaemon/sdrdaemonparser.cpp +++ b/sdrdaemon/sdrdaemonparser.cpp @@ -129,7 +129,7 @@ void SDRDaemonParser::parse(const QCoreApplication& app) qWarning() << "SDRDaemonParser::parse: data address invalid. Defaulting to " << m_dataAddress; } - // server port + // data port QString dataPortStr = m_parser.value(m_dataPortOption); serverPort = serverPortStr.toInt(&ok); diff --git a/sdrdaemon/webapi/webapiadapterdaemon.cpp b/sdrdaemon/webapi/webapiadapterdaemon.cpp index 5703a3736..7efaba0f9 100644 --- a/sdrdaemon/webapi/webapiadapterdaemon.cpp +++ b/sdrdaemon/webapi/webapiadapterdaemon.cpp @@ -17,12 +17,15 @@ /////////////////////////////////////////////////////////////////////////////////// #include "SWGDaemonSummaryResponse.h" +#include "SWGLoggingInfo.h" #include "SWGDeviceSettings.h" #include "SWGDeviceState.h" #include "SWGDeviceReport.h" #include "SWGErrorResponse.h" #include "webapiadapterdaemon.h" +#include "sdrdaemonmain.h" +#include "loggerwithfile.h" QString WebAPIAdapterDaemon::daemonInstanceSummaryURL = "/sdrdaemon"; QString WebAPIAdapterDaemon::daemonInstanceLoggingURL = "/sdrdaemon/logging"; @@ -49,22 +52,58 @@ int WebAPIAdapterDaemon::daemonInstanceSummary( } int WebAPIAdapterDaemon::daemonInstanceLoggingGet( - SWGSDRangel::SWGLoggingInfo& response __attribute__((unused)), - SWGSDRangel::SWGErrorResponse& error) + SWGSDRangel::SWGLoggingInfo& response, + SWGSDRangel::SWGErrorResponse& error __attribute__((unused))) { - error.init(); - *error.getMessage() = "Not implemented"; - return 501; + response.init(); + response.setDumpToFile(m_sdrDaemonMain.m_logger->getUseFileLogger() ? 1 : 0); + + if (response.getDumpToFile()) { + m_sdrDaemonMain.m_logger->getLogFileName(*response.getFileName()); + m_sdrDaemonMain.m_logger->getFileMinMessageLevelStr(*response.getFileLevel()); + } + + m_sdrDaemonMain.m_logger->getConsoleMinMessageLevelStr(*response.getConsoleLevel()); + + return 200; } int WebAPIAdapterDaemon::daemonInstanceLoggingPut( - SWGSDRangel::SWGLoggingInfo& query __attribute__((unused)), - SWGSDRangel::SWGLoggingInfo& response __attribute__((unused)), - SWGSDRangel::SWGErrorResponse& error) + SWGSDRangel::SWGLoggingInfo& query, + SWGSDRangel::SWGLoggingInfo& response, + SWGSDRangel::SWGErrorResponse& error __attribute__((unused))) { - error.init(); - *error.getMessage() = "Not implemented"; - return 501; + // response input is the query actually + bool dumpToFile = (query.getDumpToFile() != 0); + QString* consoleLevel = query.getConsoleLevel(); + QString* fileLevel = query.getFileLevel(); + QString* fileName = query.getFileName(); + + // perform actions + if (consoleLevel) { + m_sdrDaemonMain.m_settings.setConsoleMinLogLevel(getMsgTypeFromString(*consoleLevel)); + } + + if (fileLevel) { + m_sdrDaemonMain.m_settings.setFileMinLogLevel(getMsgTypeFromString(*fileLevel)); + } + + m_sdrDaemonMain.m_settings.setUseLogFile(dumpToFile); + + if (fileName) { + m_sdrDaemonMain.m_settings.setLogFileName(*fileName); + } + + m_sdrDaemonMain.setLoggingOptions(); + + // build response + response.init(); + getMsgTypeString(m_sdrDaemonMain.m_settings.getConsoleMinLogLevel(), *response.getConsoleLevel()); + response.setDumpToFile(m_sdrDaemonMain.m_settings.getUseLogFile() ? 1 : 0); + getMsgTypeString(m_sdrDaemonMain.m_settings.getFileMinLogLevel(), *response.getFileLevel()); + *response.getFileName() = m_sdrDaemonMain.m_settings.getLogFileName(); + + return 200; } int WebAPIAdapterDaemon::daemonSettingsGet(