From 49fd01ccfb46b318ca895382aaeabd284844b536 Mon Sep 17 00:00:00 2001 From: kaetemi Date: Thu, 13 Mar 2014 18:34:26 +0100 Subject: [PATCH] Add color to console output --- code/nel/src/misc/displayer.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/code/nel/src/misc/displayer.cpp b/code/nel/src/misc/displayer.cpp index d91193759..a1b1c7de8 100644 --- a/code/nel/src/misc/displayer.cpp +++ b/code/nel/src/misc/displayer.cpp @@ -31,10 +31,10 @@ #include "nel/misc/mutex.h" #include "nel/misc/report.h" #include "nel/misc/system_utils.h" +#include "nel/misc/variable.h" #include "nel/misc/debug.h" - #ifdef NL_OS_WINDOWS // these defines is for IsDebuggerPresent(). it'll not compile on windows 95 // just comment this and the IsDebuggerPresent to compile on windows 95 @@ -57,6 +57,8 @@ using namespace std; namespace NLMISC { +CVariable StdDisplayerColor("nel", "StdDisplayerColor", "Enable colors in std displayer", true, 0, true); + static const char *LogTypeToString[][8] = { { "", "ERR", "WRN", "INF", "DBG", "STT", "AST", "UKN" }, { "", "Error", "Warning", "Information", "Debug", "Statistic", "Assert", "Unknown" }, @@ -139,9 +141,20 @@ void CStdDisplayer::doDisplay ( const CLog::TDisplayInfo& args, const char *mess bool needSpace = false; //stringstream ss; string str; +#ifdef NL_OS_UNIX + bool colorSet = false; +#endif if (args.LogType != CLog::LOG_NO) { +#ifdef NL_OS_UNIX + if (StdDisplayerColor.get()) + { + if (args.LogType == CLog::LOG_ERROR || args.LogType == CLog::LOG_ASSERT) { str += "\e[0;30m\e[41m"; colorSet = true; } // black text, red background + else if (args.LogType == CLog::LOG_WARNING) { str += "\e[0;91m"; colorSet = true; } // bright red text + else if (args.LogType == CLog::LOG_DEBUG) { str += "\e[0;34m"; colorSet = true; } // blue text + } +#endif //ss << logTypeToString(args.LogType); str += logTypeToString(args.LogType); needSpace = true; @@ -218,6 +231,13 @@ void CStdDisplayer::doDisplay ( const CLog::TDisplayInfo& args, const char *mess } #endif // NL_OS_WINDOWS +#ifdef NL_OS_UNIX + if (colorSet) + { + str += "\e[0m"; + } +#endif + // Printf ? if (consoleMode) {