diff --git a/libminifi/include/core/logging/LoggerConfiguration.h b/libminifi/include/core/logging/LoggerConfiguration.h index 4b4d6eb631..f9721c73fa 100644 --- a/libminifi/include/core/logging/LoggerConfiguration.h +++ b/libminifi/include/core/logging/LoggerConfiguration.h @@ -71,15 +71,9 @@ class LoggerConfiguration { friend class ::LogTestController; public: - /** - * Gets the current log configuration - */ + LoggerConfiguration(); // used in some tests only static LoggerConfiguration& getConfiguration(); - static std::unique_ptr newInstance() { - return std::unique_ptr(new LoggerConfiguration()); // NOLINT(modernize-make-unique, cppcoreguidelines-owning-memory - } - void disableLogging() { controller_->setEnabled(false); } @@ -163,7 +157,6 @@ class LoggerConfiguration { static std::shared_ptr getRotatingFileSink(const std::string& appender_key, const std::shared_ptr& properties); - LoggerConfiguration(); internal::CompressionManager compression_manager_; std::shared_ptr root_namespace_; diff --git a/libminifi/test/libtest/unit/TestBase.cpp b/libminifi/test/libtest/unit/TestBase.cpp index 0cf593b343..b4a58191f7 100644 --- a/libminifi/test/libtest/unit/TestBase.cpp +++ b/libminifi/test/libtest/unit/TestBase.cpp @@ -158,8 +158,9 @@ void LogTestController::reset() { setLevel(name, spdlog::level::err); } modified_loggers.clear(); - if (config) - config = logging::LoggerConfiguration::newInstance(); + if (config) { + config = std::make_unique(); + } my_properties_ = std::make_shared(""); clear(); init(nullptr); @@ -195,7 +196,7 @@ void LogTestController::init(const std::shared_ptr& l logging::LoggerConfiguration::getConfiguration().initialize(my_properties_); logger_ = logging::LoggerConfiguration::getConfiguration().getLogger(minifi::core::className()); } else { - config = logging::LoggerConfiguration::newInstance(); + config = std::make_unique(); // create for test purposes. most tests use the main logging factory, but this exists to test the logging // framework itself. config->initialize(my_properties_); diff --git a/libminifi/test/unit/LoggerTests.cpp b/libminifi/test/unit/LoggerTests.cpp index 1326c7ddff..b2276600d0 100644 --- a/libminifi/test/unit/LoggerTests.cpp +++ b/libminifi/test/unit/LoggerTests.cpp @@ -228,7 +228,7 @@ class LoggerTestAccessor { }; TEST_CASE("Test Compression", "[ttl9]") { - auto log_config = logging::LoggerConfiguration::newInstance(); + logging::LoggerConfiguration log_config; auto properties = std::make_shared(""); std::string className; SECTION("Using root logger") { @@ -241,38 +241,38 @@ TEST_CASE("Test Compression", "[ttl9]") { properties->set("appender.null", "null"); properties->set("logger." + className, "INFO,null"); } - log_config->initialize(properties); - auto logger = log_config->getLogger(className); + log_config.initialize(properties); + auto logger = log_config.getLogger(className); logger->log_error("Hi there"); - REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(*log_config)); - auto compressed_logs = LoggerTestAccessor::getCompressedLogs(*log_config); + REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(log_config)); + auto compressed_logs = LoggerTestAccessor::getCompressedLogs(log_config); REQUIRE(compressed_logs.size() == 1); auto logs = decompress(compressed_logs[0]); REQUIRE(logs.find("Hi there") != std::string::npos); } TEST_CASE("Test Compression cache overflow is discarded intermittently", "[ttl10]") { - auto log_config = logging::LoggerConfiguration::newInstance(); + logging::LoggerConfiguration log_config; auto properties = std::make_shared(""); properties->set(logging::internal::CompressionManager::compression_cached_log_max_size_, "10 KB"); - LoggerTestAccessor::setCompressionCacheSegmentSize(*log_config, 1_KiB); + LoggerTestAccessor::setCompressionCacheSegmentSize(log_config, 1_KiB); std::string className = "CompressionTestCacheCleaned"; // by default the root logger is OFF properties->set("logger.root", "INFO"); - log_config->initialize(properties); - auto logger = log_config->getLogger(className); + log_config.initialize(properties); + auto logger = log_config.getLogger(className); for (size_t idx = 0; idx < 10000; ++idx) { logger->log_error("Hi there"); } bool cache_shrunk = minifi::test::utils::verifyEventHappenedInPollTime(std::chrono::seconds{1}, [&] { - return LoggerTestAccessor::getUncompressedSize(*log_config) <= 10_KiB; + return LoggerTestAccessor::getUncompressedSize(log_config) <= 10_KiB; }); REQUIRE(cache_shrunk); } TEST_CASE("Setting either properties to 0 disables in-memory compressed logs", "[ttl11]") { - auto log_config = logging::LoggerConfiguration::newInstance(); + logging::LoggerConfiguration log_config; auto properties = std::make_shared(""); bool is_empty = false; SECTION("Cached log size is set to 0") { @@ -289,26 +289,26 @@ TEST_CASE("Setting either properties to 0 disables in-memory compressed logs", " } // by default the root logger is OFF properties->set("logger.root", "INFO"); - log_config->initialize(properties); - auto logger = log_config->getLogger("DisableCompressionTestLogger"); + log_config.initialize(properties); + auto logger = log_config.getLogger("DisableCompressionTestLogger"); logger->log_error("Hi there"); - REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(*log_config)); - auto compressed_logs = LoggerTestAccessor::getCompressedLogs(*log_config); + REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(log_config)); + auto compressed_logs = LoggerTestAccessor::getCompressedLogs(log_config); REQUIRE(compressed_logs.empty() == is_empty); } TEST_CASE("Setting max log entry length property trims long log entries", "[ttl12]") { - auto log_config = logging::LoggerConfiguration::newInstance(); + logging::LoggerConfiguration log_config; auto properties = std::make_shared(""); properties->set("max.log.entry.length", "2"); properties->set("logger.root", "INFO"); - log_config->initialize(properties); - auto logger = log_config->getLogger("SetMaxLogEntryLengthTestLogger"); + log_config.initialize(properties); + auto logger = log_config.getLogger("SetMaxLogEntryLengthTestLogger"); logger->log_error("Hi there"); - REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(*log_config)); - auto compressed_logs = LoggerTestAccessor::getCompressedLogs(*log_config); + REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(log_config)); + auto compressed_logs = LoggerTestAccessor::getCompressedLogs(log_config); REQUIRE(compressed_logs.size() == 1); auto logs = decompress(compressed_logs[0]); REQUIRE(logs.find("Hi ") == std::string::npos); @@ -316,16 +316,16 @@ TEST_CASE("Setting max log entry length property trims long log entries", "[ttl1 } TEST_CASE("Setting max log entry length property trims long formatted log entries", "[ttl13]") { - auto log_config = logging::LoggerConfiguration::newInstance(); + logging::LoggerConfiguration log_config; auto properties = std::make_shared(""); properties->set("max.log.entry.length", "2"); properties->set("logger.root", "INFO"); - log_config->initialize(properties); - auto logger = log_config->getLogger("SetMaxLogEntryLengthInFormattedTestLogger"); + log_config.initialize(properties); + auto logger = log_config.getLogger("SetMaxLogEntryLengthInFormattedTestLogger"); logger->log_error("Hi there {}", "John"); - REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(*log_config)); - auto compressed_logs = LoggerTestAccessor::getCompressedLogs(*log_config); + REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(log_config)); + auto compressed_logs = LoggerTestAccessor::getCompressedLogs(log_config); REQUIRE(compressed_logs.size() == 1); auto logs = decompress(compressed_logs[0]); REQUIRE(logs.find("Hi ") == std::string::npos); @@ -333,18 +333,18 @@ TEST_CASE("Setting max log entry length property trims long formatted log entrie } TEST_CASE("Setting max log entry length to a size larger than the internal buffer size", "[ttl14]") { - auto log_config = logging::LoggerConfiguration::newInstance(); + logging::LoggerConfiguration log_config; auto properties = std::make_shared(""); properties->set("max.log.entry.length", "1500"); properties->set("logger.root", "INFO"); - log_config->initialize(properties); - auto logger = log_config->getLogger("SetMaxLogEntryLengthToLargerThanBufferSizeTestLogger"); + log_config.initialize(properties); + auto logger = log_config.getLogger("SetMaxLogEntryLengthToLargerThanBufferSizeTestLogger"); std::string log(2000, 'a'); std::string expected_log(1500, 'a'); logger->log_error("{}", log); - REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(*log_config)); - auto compressed_logs = LoggerTestAccessor::getCompressedLogs(*log_config); + REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(log_config)); + auto compressed_logs = LoggerTestAccessor::getCompressedLogs(log_config); REQUIRE(compressed_logs.size() == 1); auto logs = decompress(compressed_logs[0]); REQUIRE(logs.find(log) == std::string::npos); @@ -352,7 +352,7 @@ TEST_CASE("Setting max log entry length to a size larger than the internal buffe } TEST_CASE("Setting max log entry length to unlimited results in unlimited log entry size", "[ttl15]") { - auto log_config = logging::LoggerConfiguration::newInstance(); + logging::LoggerConfiguration log_config; auto properties = std::make_shared(""); std::string_view logger_name; SECTION("Use unlimited value") { @@ -364,13 +364,13 @@ TEST_CASE("Setting max log entry length to unlimited results in unlimited log en logger_name = "SetMaxLogEntryLengthTo-1TestLogger"; } properties->set("logger.root", "INFO"); - log_config->initialize(properties); - auto logger = log_config->getLogger(logger_name); + log_config.initialize(properties); + auto logger = log_config.getLogger(logger_name); std::string log(5000, 'a'); logger->log_error("{}", log); - REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(*log_config)); - auto compressed_logs = LoggerTestAccessor::getCompressedLogs(*log_config); + REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(log_config)); + auto compressed_logs = LoggerTestAccessor::getCompressedLogs(log_config); REQUIRE(compressed_logs.size() == 1); auto logs = decompress(compressed_logs[0]); REQUIRE(logs.find(log) != std::string::npos); @@ -417,22 +417,22 @@ std::vector generateRandomStrings() { } TEST_CASE("Test sending multiple segments at once", "[ttl16]") { - auto log_config = logging::LoggerConfiguration::newInstance(); - LoggerTestAccessor::setCompressionCompressedSegmentSize(*log_config, 100); - LoggerTestAccessor::setCompressionCacheSegmentSize(*log_config, 100); + logging::LoggerConfiguration log_config; + LoggerTestAccessor::setCompressionCompressedSegmentSize(log_config, 100); + LoggerTestAccessor::setCompressionCacheSegmentSize(log_config, 100); auto properties = std::make_shared(""); // by default the root logger is OFF properties->set("logger.root", "INFO"); - log_config->initialize(properties); - auto logger = log_config->getLogger("CompressionTestMultiSegment"); + log_config.initialize(properties); + auto logger = log_config.getLogger("CompressionTestMultiSegment"); const auto random_strings = generateRandomStrings(); for (const auto& random_string : random_strings) { logger->log_error("{}", random_string); } - REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(*log_config)); - auto compressed_logs = LoggerTestAccessor::getCompressedLogs(*log_config); + REQUIRE(LoggerTestAccessor::waitForCompressionToHappen(log_config)); + auto compressed_logs = LoggerTestAccessor::getCompressedLogs(log_config); REQUIRE(compressed_logs.size() == random_strings.size()); for (size_t i = 0; i < compressed_logs.size(); ++i) { auto logs = decompress(compressed_logs[i]);