diff --git a/sdrsrv/webapi/webapiadaptersrv.cpp b/sdrsrv/webapi/webapiadaptersrv.cpp index 38e1cc6a7..2bfc47caf 100644 --- a/sdrsrv/webapi/webapiadaptersrv.cpp +++ b/sdrsrv/webapi/webapiadaptersrv.cpp @@ -155,6 +155,43 @@ int WebAPIAdapterSrv::instanceLoggingGet( return 200; } +int WebAPIAdapterSrv::instanceLoggingPut( + SWGSDRangel::SWGLoggingInfo& response, + SWGSDRangel::SWGErrorResponse& error __attribute__((unused))) +{ + // response input is the query actually + bool dumpToFile = (response.getDumpToFile() != 0); + QString* consoleLevel = response.getConsoleLevel(); + QString* fileLevel = response.getFileLevel(); + QString* fileName = response.getFileName(); + + // perform actions + if (consoleLevel) { + m_mainCore.m_settings.setConsoleMinLogLevel(getMsgTypeFromString(*consoleLevel)); + } + + if (fileLevel) { + m_mainCore.m_settings.setFileMinLogLevel(getMsgTypeFromString(*fileLevel)); + } + + m_mainCore.m_settings.setUseLogFile(dumpToFile); + + if (fileName) { + m_mainCore.m_settings.setLogFileName(*fileName); + } + + m_mainCore.setLoggingOptions(); + + // build response + response.init(); + getMsgTypeString(m_mainCore.m_settings.getConsoleMinLogLevel(), *response.getConsoleLevel()); + response.setDumpToFile(m_mainCore.m_settings.getUseLogFile() ? 1 : 0); + getMsgTypeString(m_mainCore.m_settings.getFileMinLogLevel(), *response.getFileLevel()); + *response.getFileName() = m_mainCore.m_settings.getLogFileName(); + + return 200; +} + void WebAPIAdapterSrv::getDeviceSetList(SWGSDRangel::SWGDeviceSetList* deviceSetList) { deviceSetList->init(); @@ -238,3 +275,41 @@ void WebAPIAdapterSrv::getDeviceSet(SWGSDRangel::SWGDeviceSet *swgDeviceSet, con } } } + +QtMsgType WebAPIAdapterSrv::getMsgTypeFromString(const QString& msgTypeString) +{ + if (msgTypeString == "debug") { + return QtDebugMsg; + } else if (msgTypeString == "info") { + return QtInfoMsg; + } else if (msgTypeString == "warning") { + return QtWarningMsg; + } else if (msgTypeString == "error") { + return QtCriticalMsg; + } else { + return QtDebugMsg; + } +} + +void WebAPIAdapterSrv::getMsgTypeString(const QtMsgType& msgType, QString& levelStr) +{ + switch (msgType) + { + case QtDebugMsg: + levelStr = "debug"; + break; + case QtInfoMsg: + levelStr = "info"; + break; + case QtWarningMsg: + levelStr = "warning"; + break; + case QtCriticalMsg: + case QtFatalMsg: + levelStr = "error"; + break; + default: + levelStr = "debug"; + break; + } +} diff --git a/sdrsrv/webapi/webapiadaptersrv.h b/sdrsrv/webapi/webapiadaptersrv.h index 8ef65f7d3..25bcea1f8 100644 --- a/sdrsrv/webapi/webapiadaptersrv.h +++ b/sdrsrv/webapi/webapiadaptersrv.h @@ -54,11 +54,17 @@ public: SWGSDRangel::SWGLoggingInfo& response, SWGSDRangel::SWGErrorResponse& error); + virtual int instanceLoggingPut( + SWGSDRangel::SWGLoggingInfo& response, + SWGSDRangel::SWGErrorResponse& error); + private: MainCore& m_mainCore; void getDeviceSetList(SWGSDRangel::SWGDeviceSetList* deviceSetList); void getDeviceSet(SWGSDRangel::SWGDeviceSet *swgDeviceSet, const DeviceSet* deviceSet, int deviceUISetIndex); + static QtMsgType getMsgTypeFromString(const QString& msgTypeString); + static void getMsgTypeString(const QtMsgType& msgType, QString& level); }; #endif /* SDRSRV_WEBAPI_WEBAPIADAPTERSRV_H_ */