summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/log.h10
-rw-r--r--src/main.cpp19
2 files changed, 20 insertions, 9 deletions
diff --git a/src/log.h b/src/log.h
index 952ebadb1..1427d1364 100644
--- a/src/log.h
+++ b/src/log.h
@@ -118,16 +118,16 @@ public:
m_stream(stream)
{
#if !defined(_WIN32)
- colored = (Logger::color_mode == LOG_COLOR_ALWAYS) ||
- (Logger::color_mode == LOG_COLOR_AUTO && isatty(fileno(stdout)));
+ is_tty = isatty(fileno(stdout));
#else
- colored = Logger::color_mode == LOG_COLOR_ALWAYS;
+ is_tty = false;
#endif
}
void logRaw(LogLevel lev, const std::string &line)
{
- bool colored_message = colored;
+ bool colored_message = (Logger::color_mode == LOG_COLOR_ALWAYS) ||
+ (Logger::color_mode == LOG_COLOR_AUTO && is_tty);
if (colored_message)
switch (lev) {
case LL_ERROR:
@@ -160,7 +160,7 @@ public:
private:
std::ostream &m_stream;
- bool colored;
+ bool is_tty;
};
class FileLogOutput : public ICombinedLogOutput {
diff --git a/src/main.cpp b/src/main.cpp
index 26ad978c6..e4e47b1ac 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -407,14 +407,25 @@ static void setup_log_params(const Settings &cmd_args)
}
// Coloured log messages (see log.h)
+ std::string color_mode;
if (cmd_args.exists("color")) {
- std::string mode = cmd_args.get("color");
- if (mode == "auto")
+ color_mode = cmd_args.get("color");
+#if !defined(_WIN32)
+ } else {
+ char *color_mode_env = getenv("MT_LOGCOLOR");
+ if (color_mode_env)
+ color_mode = color_mode_env;
+#endif
+ }
+ if (color_mode != "") {
+ if (color_mode == "auto")
Logger::color_mode = LOG_COLOR_AUTO;
- else if (mode == "always")
+ else if (color_mode == "always")
Logger::color_mode = LOG_COLOR_ALWAYS;
- else
+ else if (color_mode == "never")
Logger::color_mode = LOG_COLOR_NEVER;
+ else
+ errorstream << "Invalid color mode: " << color_mode << std::endl;
}
// If trace is enabled, enable logging of certain things