From d4aa1fa6db4a157493b804fed428b3b5b06a4e9c Mon Sep 17 00:00:00 2001 From: Olivier BICHLER <olivier.bichler@cea.fr> Date: Tue, 12 Mar 2024 15:58:49 +0100 Subject: [PATCH] Updated log system to use env vars --- include/aidge/utils/Log.hpp | 7 +++++++ src/utils/Log.cpp | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/include/aidge/utils/Log.hpp b/include/aidge/utils/Log.hpp index 8a18bbab3..005232cd5 100644 --- a/include/aidge/utils/Log.hpp +++ b/include/aidge/utils/Log.hpp @@ -18,6 +18,8 @@ #include <fmt/format.h> #include <fmt/ranges.h> +#include "aidge/utils/Attributes.hpp" + namespace Aidge { /** * Aidge logging class, for displaying and file logging of events. @@ -145,4 +147,9 @@ private: }; } +namespace { +template <> +const char *const EnumStrings<Aidge::Log::Level>::data[] = {"Debug", "Info", "Notice", "Warn", "Error", "Fatal"}; +} + #endif //AIDGE_LOG_H_ diff --git a/src/utils/Log.cpp b/src/utils/Log.cpp index 764980933..4fd38f67c 100644 --- a/src/utils/Log.cpp +++ b/src/utils/Log.cpp @@ -12,12 +12,40 @@ #include "aidge/utils/Log.hpp" #include "aidge/utils/ErrorHandling.hpp" +#include <cstdlib> + #include <fmt/color.h> #include <fmt/chrono.h> -Aidge::Log::Level Aidge::Log::mConsoleLevel = Info; -Aidge::Log::Level Aidge::Log::mFileLevel = Debug; -std::string Aidge::Log::mFileName = "aidge.log"; +Aidge::Log::Level Aidge::Log::mConsoleLevel = []() { + const char* logLevel = std::getenv("AIDGE_LOGLEVEL_CONSOLE"); + if (logLevel != nullptr) { + for (std::size_t i = 0; i < size(EnumStrings<Log::Level>::data); ++i) { + if (std::string(logLevel) == EnumStrings<Log::Level>::data[i]) { + return static_cast<Log::Level>(i); + } + } + } + return Info; +}(); +Aidge::Log::Level Aidge::Log::mFileLevel = []() { + const char* logLevel = std::getenv("AIDGE_LOGLEVEL_FILE"); + if (logLevel != nullptr) { + for (std::size_t i = 0; i < size(EnumStrings<Log::Level>::data); ++i) { + if (std::string(logLevel) == EnumStrings<Log::Level>::data[i]) { + return static_cast<Log::Level>(i); + } + } + } + return Debug; +}(); +std::string Aidge::Log::mFileName = []() { + const char* logFile = std::getenv("AIDGE_LOG_FILE"); + if (logFile != nullptr) { + return std::string(logFile); + } + return std::string(); +}(); std::unique_ptr<FILE, decltype(&std::fclose)> Aidge::Log::mFile {nullptr, nullptr}; void Aidge::Log::log(Level level, const std::string& msg) { -- GitLab