summaryrefslogtreecommitdiff
path: root/test/utils/logging/log_config.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/utils/logging/log_config.hpp')
-rw-r--r--test/utils/logging/log_config.hpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/test/utils/logging/log_config.hpp b/test/utils/logging/log_config.hpp
new file mode 100644
index 00000000..9f243d83
--- /dev/null
+++ b/test/utils/logging/log_config.hpp
@@ -0,0 +1,42 @@
+#ifndef INCLUDED_SRC_TEST_UTILS_LOGGING_LOG_CONFIG_HPP
+#define INCLUDED_SRC_TEST_UTILS_LOGGING_LOG_CONFIG_HPP
+
+#include <cstdlib>
+
+#include "src/buildtool/logging/log_config.hpp"
+#include "src/buildtool/logging/log_sink_cmdline.hpp"
+
+static auto ReadLogLevelFromEnv() -> LogLevel {
+ LogLevel const kDefaultTestLogLevel{LogLevel::Error};
+ LogLevel const kMaximumTestLogLevel{LogLevel::Trace};
+
+ auto log_level{kDefaultTestLogLevel};
+
+ auto* log_level_str = std::getenv("LOG_LEVEL_TESTS");
+ if (log_level_str not_eq nullptr) {
+ try {
+ log_level = static_cast<LogLevel>(std::stoul(log_level_str));
+ } catch (std::exception&) {
+ log_level = kDefaultTestLogLevel;
+ }
+ }
+
+ switch (log_level) {
+ case LogLevel::Error:
+ case LogLevel::Warning:
+ case LogLevel::Info:
+ case LogLevel::Debug:
+ case LogLevel::Trace:
+ return log_level;
+ }
+
+ // log level is out of range
+ return kMaximumTestLogLevel;
+}
+
+[[maybe_unused]] static inline void ConfigureLogging() {
+ LogConfig::SetLogLimit(ReadLogLevelFromEnv());
+ LogConfig::SetSinks({LogSinkCmdLine::CreateFactory(false /*no color*/)});
+}
+
+#endif // INCLUDED_SRC_TEST_UTILS_LOGGING_LOG_CONFIG_HPP