diff --git a/lib/api/LogConfiguration.cpp b/lib/api/LogConfiguration.cpp index 23a7e53cd..bae668229 100644 --- a/lib/api/LogConfiguration.cpp +++ b/lib/api/LogConfiguration.cpp @@ -68,14 +68,13 @@ namespace MAT_NS_BEGIN { return result; } - ILogConfiguration FromJSON(const char* configuration) + void MergeFromJSON(ILogConfiguration &config, const char* configuration) { - ILogConfiguration result; #ifdef HAVE_MAT_JSONHPP - auto src = json::parse(configuration); - std::function parse; - parse = [&parse](json &src, VariantMap &dst)->void { - for (json::iterator it = src.begin(); it != src.end(); ++it) { + auto jsonRoot = json::parse(configuration); + std::function parse; + parse = [&parse](json &node, VariantMap &dst)->void { + for (json::iterator it = node.begin(); it != node.end(); ++it) { auto t = it.value().type(); switch (t) { @@ -119,11 +118,17 @@ namespace MAT_NS_BEGIN { } } }; - parse(src, *result); + parse(jsonRoot, *config); #else (void)(configuration); assert(false /* json.hpp support is not enabled! */); #endif + } + + ILogConfiguration FromJSON(const char* configuration) + { + ILogConfiguration result; + MergeFromJSON(result, configuration); return result; } diff --git a/lib/include/public/LogConfiguration.hpp b/lib/include/public/LogConfiguration.hpp index 4cf31d7aa..e914e30cf 100644 --- a/lib/include/public/LogConfiguration.hpp +++ b/lib/include/public/LogConfiguration.hpp @@ -106,6 +106,8 @@ namespace MAT_NS_BEGIN { MATSDK_LIBABI ILogConfiguration FromJSON(const char* json); + MATSDK_LIBABI void MergeFromJSON(ILogConfiguration &config, const char* json); + } MAT_NS_END #endif diff --git a/wrappers/obj-c/ODWLogManager.mm b/wrappers/obj-c/ODWLogManager.mm index 127de8dc3..1473adc9f 100644 --- a/wrappers/obj-c/ODWLogManager.mm +++ b/wrappers/obj-c/ODWLogManager.mm @@ -122,11 +122,8 @@ +(nullable ILogger *)initializeLogManager:(nonnull NSString *)tenantToken withCo ILogger* logger = nullptr; try { - static ILogConfiguration logManagerConfig; - - // Initializing logManager config with default configuration - auto& defaultConfig = LogManager::GetLogConfiguration(); - logManagerConfig = defaultConfig; + // Get reference to the default configuration + auto& logManagerConfig = LogManager::GetLogConfiguration(); // Update logManager config when custom configuration is provided. if (config != nil && config.count > 0) @@ -138,7 +135,7 @@ +(nullable ILogger *)initializeLogManager:(nonnull NSString *)tenantToken withCo if (jsonData) { NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; - logManagerConfig = MAT::FromJSON([jsonString UTF8String]); + MAT::MergeFromJSON(logManagerConfig, [jsonString UTF8String]); } else {