From cbbb16e7dc1785a83a7d672aeb4f8711b6916e11 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Sun, 27 Aug 2023 16:21:57 +0200 Subject: [PATCH] Improve test_logger --- test/test_logger.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/test/test_logger.h b/test/test_logger.h index 8032b907..3fdac7f9 100644 --- a/test/test_logger.h +++ b/test/test_logger.h @@ -52,8 +52,10 @@ class test_logger : public ::dwarfs::logger { test_logger(std::optional threshold = std::nullopt) : threshold_{threshold ? *threshold : default_threshold()} + , output_threshold_{output_threshold(default_threshold())} , output_{::dwarfs::getenv_is_enabled("DWARFS_TEST_LOGGER_OUTPUT")} { - if (output_ || threshold > level_type::INFO) { + if (threshold_ >= level_type::DEBUG || + (output_ && output_threshold_ > level_type::DEBUG)) { set_policy(); } else { set_policy(); @@ -62,7 +64,7 @@ class test_logger : public ::dwarfs::logger { void write(level_type level, std::string const& output, char const* file, int line) override { - if (output_) { + if (output_ && level <= output_threshold_) { std::lock_guard lock(mx_); std::cerr << level_char(level) << " [" << file << ":" << line << "] " << output << "\n"; @@ -81,16 +83,19 @@ class test_logger : public ::dwarfs::logger { void clear() { log_.clear(); } private: - static level_type default_threshold() { + static level_type default_threshold() { return level_type::INFO; } + + static level_type output_threshold(level_type default_level) { if (auto var = std::getenv("DWARFS_TEST_LOGGER_LEVEL")) { return ::dwarfs::logger::parse_level(var); } - return level_type::INFO; + return default_level; } std::mutex mx_; std::vector log_; level_type const threshold_; + level_type const output_threshold_; bool const output_; };