diff --git a/include/aidge/utils/Log.hpp b/include/aidge/utils/Log.hpp index a400f8046d07df4ff4493470737f5c4d42945db7..f198e83fbacdc2cceee1c947d0c17244d4c9953e 100644 --- a/include/aidge/utils/Log.hpp +++ b/include/aidge/utils/Log.hpp @@ -145,6 +145,14 @@ public: mConsoleLevel = level; } + /** + * Set or disable colors on console. + * Initial value should be assumed true. + */ + static void setConsoleColor(bool enabled) { + mConsoleColor = enabled; + } + /** * Set the minimum log level saved in the log file. */ @@ -173,6 +181,7 @@ private: static void initFile(const std::string& fileName); static Level mConsoleLevel; + static bool mConsoleColor; static Level mFileLevel; static std::string mFileName; static std::unique_ptr<FILE, decltype(&std::fclose)> mFile; diff --git a/python_binding/utils/pybind_Log.cpp b/python_binding/utils/pybind_Log.cpp index 7b5e7548b3126ed2ebfe3d9243248dc070c54076..f70a4bfab54ee14194ea04f96efa33a6b8e04201 100644 --- a/python_binding/utils/pybind_Log.cpp +++ b/python_binding/utils/pybind_Log.cpp @@ -82,6 +82,14 @@ void init_Log(py::module& m){ :param level: Log level. :type level: Level )mydelimiter") + .def_static("set_console_color", &Log::setConsoleColor, py::arg("enabled"), + R"mydelimiter( + Enables or disable color output on comsole. + Initial value should be assumed True. + + :param enabled: Activate or deactivate colors on console. + :type enabled: bool + )mydelimiter") .def_static("set_file_level", &Log::setFileLevel, py::arg("level"), R"mydelimiter( Set the minimum log level saved in the log file. diff --git a/src/utils/Log.cpp b/src/utils/Log.cpp index 54af888caca8dc2c4b512515ff70663f9437dd45..ae8816e78b6fc7b8f2288b6873642f0729e195b6 100644 --- a/src/utils/Log.cpp +++ b/src/utils/Log.cpp @@ -28,6 +28,16 @@ Aidge::Log::Level Aidge::Log::mConsoleLevel = []() { } return Info; }(); +bool Aidge::Log::mConsoleColor = []() { + const char* logColor = std::getenv("AIDGE_LOG_COLOR"); + if (logColor == nullptr) + return true; + auto logColorStr = std::string(logColor); + if (logColorStr == "off" || logColorStr == "OFF" || + logColorStr == "0") + return false; + return true; +}(); Aidge::Log::Level Aidge::Log::mFileLevel = []() { const char* logLevel = std::getenv("AIDGE_LOGLEVEL_FILE"); if (logLevel != nullptr) { @@ -55,7 +65,8 @@ void Aidge::Log::log(Level level, const std::string& msg) { // Styles that were already applied to msg with fmt are kept also in // the log file. const auto modifier - = (level == Debug) ? fmt::fg(fmt::color::gray) + = !mConsoleColor ? fmt::text_style() + : (level == Debug) ? fmt::fg(fmt::color::gray) : (level == Notice) ? fmt::fg(fmt::color::medium_purple) : (level == Warn) ? fmt::fg(fmt::color::orange) : (level == Error) ? fmt::fg(fmt::color::red)