From 8ae467985f8613adf3183ec68c4d4b4fd79611a0 Mon Sep 17 00:00:00 2001 From: Dennis Luxen Date: Tue, 1 Apr 2014 17:05:19 +0200 Subject: [PATCH] turn off colored logging if output is redirected to file --- Util/SimpleLogger.h | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/Util/SimpleLogger.h b/Util/SimpleLogger.h index 144ca73b7..00b893579 100644 --- a/Util/SimpleLogger.h +++ b/Util/SimpleLogger.h @@ -32,6 +32,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include + #include #include @@ -70,16 +72,20 @@ private: bool m_is_mute; }; -class SimpleLogger { +class SimpleLogger +{ public: SimpleLogger() : level(logINFO) { } - std::ostringstream& Write(LogLevel l = logINFO) { - try { + std::ostringstream& Write(LogLevel l = logINFO) + { + try + { boost::mutex::scoped_lock lock(logger_mutex); level = l; os << "["; - switch(level) { + switch(level) + { case logINFO: os << "info"; break; @@ -96,22 +102,26 @@ public: break; } os << "] "; - } catch (...) { } + } + catch (...) { } return os; } virtual ~SimpleLogger() { - if(!LogPolicy::GetInstance().IsMute()) { - switch(level) { + if(!LogPolicy::GetInstance().IsMute()) + { + const bool is_terminal = isatty(fileno(stdout)); + switch(level) + { case logINFO: - std::cout << os.str() << std::endl; + std::cout << os.str() << (is_terminal ? COL_RESET : "") << std::endl; break; case logWARNING: - std::cerr << RED << os.str() << COL_RESET << std::endl; + std::cerr << (is_terminal ? RED : "") << os.str() << (is_terminal ? COL_RESET : "") << std::endl; break; case logDEBUG: #ifndef NDEBUG - std::cout << YELLOW << os.str() << COL_RESET << std::endl; + std::cout << (is_terminal ? YELLOW : "") << os.str() << (is_terminal ? COL_RESET : "") << std::endl; #endif break; default: