summaryrefslogtreecommitdiff
path: root/indra/llcommon/llerror.cpp
diff options
context:
space:
mode:
authorDave Houlton <euclid@lindenlab.com>2021-12-15 14:37:18 -0700
committerDave Houlton <euclid@lindenlab.com>2021-12-15 14:37:18 -0700
commitcf35d27dfb86a8a8d8223bc344f35984efaa7b98 (patch)
tree883758ee1282e0936343ec27d80d25329aae9242 /indra/llcommon/llerror.cpp
parent199775b7ac214cfc3492c343c3f6046effcde7ed (diff)
parent0a873cd95547f003878c6d00d0883ff792f4a865 (diff)
DRTVWR-546 merge up to 6.5.2
Diffstat (limited to 'indra/llcommon/llerror.cpp')
-rw-r--r--indra/llcommon/llerror.cpp55
1 files changed, 48 insertions, 7 deletions
diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index a4a5cb2d24..17a5ec5776 100644
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -197,13 +197,37 @@ namespace {
return LLError::getEnabledLogTypesMask() & 0x04;
}
+ LL_FORCE_INLINE std::string createBoldANSI()
+ {
+ std::string ansi_code;
+ ansi_code += '\033';
+ ansi_code += "[";
+ ansi_code += "1";
+ ansi_code += "m";
+
+ return ansi_code;
+ }
+
+ LL_FORCE_INLINE std::string createResetANSI()
+ {
+ std::string ansi_code;
+ ansi_code += '\033';
+ ansi_code += "[";
+ ansi_code += "0";
+ ansi_code += "m";
+
+ return ansi_code;
+ }
+
LL_FORCE_INLINE std::string createANSI(const std::string& color)
{
std::string ansi_code;
ansi_code += '\033';
ansi_code += "[";
+ ansi_code += "38;5;";
ansi_code += color;
ansi_code += "m";
+
return ansi_code;
}
@@ -211,9 +235,26 @@ namespace {
const std::string& message) override
{
LL_PROFILE_ZONE_SCOPED
- static std::string s_ansi_error = createANSI("31"); // red
- static std::string s_ansi_warn = createANSI("34"); // blue
- static std::string s_ansi_debug = createANSI("35"); // magenta
+ // The default colors for error, warn and debug are now a bit more pastel
+ // and easier to read on the default (black) terminal background but you
+ // now have the option to set the color of each via an environment variables:
+ // LL_ANSI_ERROR_COLOR_CODE (default is red)
+ // LL_ANSI_WARN_COLOR_CODE (default is blue)
+ // LL_ANSI_DEBUG_COLOR_CODE (default is magenta)
+ // The list of color codes can be found in many places but I used this page:
+ // https://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html#256-colors
+ // (Note: you may need to restart Visual Studio to pick environment changes)
+ char* val = nullptr;
+ std::string s_ansi_error_code = "160";
+ if ((val = getenv("LL_ANSI_ERROR_COLOR_CODE")) != nullptr) s_ansi_error_code = std::string(val);
+ std::string s_ansi_warn_code = "33";
+ if ((val = getenv("LL_ANSI_WARN_COLOR_CODE")) != nullptr) s_ansi_warn_code = std::string(val);
+ std::string s_ansi_debug_code = "177";
+ if ((val = getenv("LL_ANSI_DEBUG_COLOR_CODE")) != nullptr) s_ansi_debug_code = std::string(val);
+
+ static std::string s_ansi_error = createANSI(s_ansi_error_code); // default is red
+ static std::string s_ansi_warn = createANSI(s_ansi_warn_code); // default is blue
+ static std::string s_ansi_debug = createANSI(s_ansi_debug_code); // default is magenta
if (mUseANSI)
{
@@ -224,7 +265,7 @@ namespace {
else
{
LL_PROFILE_ZONE_NAMED("fprintf");
- fprintf(stderr, "%s\n", message.c_str());
+ fprintf(stderr, "%s\n", message.c_str());
}
}
@@ -234,11 +275,11 @@ namespace {
LL_FORCE_INLINE void writeANSI(const std::string& ansi_code, const std::string& message)
{
LL_PROFILE_ZONE_SCOPED
- static std::string s_ansi_bold = createANSI("1"); // bold
- static std::string s_ansi_reset = createANSI("0"); // reset
+ static std::string s_ansi_bold = createBoldANSI(); // bold text
+ static std::string s_ansi_reset = createResetANSI(); // reset
// ANSI color code escape sequence, message, and reset in one fprintf call
// Default all message levels to bold so we can distinguish our own messages from those dumped by subprocesses and libraries.
- fprintf(stderr, "%s%s%s\n%s", s_ansi_bold.c_str(), ansi_code.c_str(), message.c_str(), s_ansi_reset.c_str() );
+ fprintf(stderr, "%s%s\n%s", ansi_code.c_str(), message.c_str(), s_ansi_reset.c_str() );
}
static bool checkANSI(void)