Skip to content
Snippets Groups Projects
Commit fce887fe authored by Christophe Guillon's avatar Christophe Guillon Committed by Olivier BICHLER
Browse files

[Log] Add possibility to disable colorization of log outputs

Add setConsoleColor(bool) method to Log module in order to control
colorization on log outputs. Default should be assumed true.
This is useful generally when redirecting outputs or using a
non colorized terminal in order to avoid annoying ANSI escape
sequences.
Add set_console_color(bool) python binding.
Add AIDGE_LOG_COLOR=[off|OFF|0] env var to disable colors at startup.
parent e754cb7b
No related branches found
No related tags found
2 merge requests!212Version 0.3.0,!169[Log] Add possibility to disable colorization of log outputs
Pipeline #50776 passed
......@@ -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;
......
......@@ -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.
......
......@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment