aboutsummaryrefslogtreecommitdiff
path: root/src/common/Logging
diff options
context:
space:
mode:
authorMikhail Redko <ovitnez@gmail.com>2021-04-11 20:41:44 +0300
committerShauren <shauren.trinity@gmail.com>2022-03-08 15:57:30 +0100
commitf7441f02349500b46341f76b054f5ef1eb7baa1d (patch)
tree91cfeafc858fa174203908768797c369c2c258ce /src/common/Logging
parent0d51e52aa608c85517035fb378500be01b0e578e (diff)
Core/Misc: Fixed utf8 encoding in console input/output. (#26352)
* Core/Misc: Fixed utf8 encoding in console input/output. * Fix gcc build * Fixed that weird 'a' with circle above it and other similar letters. Also fixed encoding in AppenderConsole which sometimes did not work as it should * Fix build on Linux * Probably better to do it like this (cherry picked from commit 1539bed3db86f2153f2d0d5fbf24bf9ee4af1d92)
Diffstat (limited to 'src/common/Logging')
-rw-r--r--src/common/Logging/AppenderConsole.cpp13
-rw-r--r--src/common/Logging/AppenderConsole.h1
2 files changed, 12 insertions, 2 deletions
diff --git a/src/common/Logging/AppenderConsole.cpp b/src/common/Logging/AppenderConsole.cpp
index 61efed60e90..fa146dc6960 100644
--- a/src/common/Logging/AppenderConsole.cpp
+++ b/src/common/Logging/AppenderConsole.cpp
@@ -162,6 +162,15 @@ void AppenderConsole::ResetColor(bool stdout_stream)
#endif
}
+void AppenderConsole::Print(std::string const& str, bool error)
+{
+#if TRINITY_PLATFORM == TRINITY_PLATFORM_WINDOWS
+ WriteWinConsole(str + "\n", error);
+#else
+ utf8printf(error ? stderr : stdout, "%s\n", str.c_str());
+#endif
+}
+
void AppenderConsole::_write(LogMessage const* message)
{
bool stdout_stream = !(message->level == LOG_LEVEL_ERROR || message->level == LOG_LEVEL_FATAL);
@@ -194,9 +203,9 @@ void AppenderConsole::_write(LogMessage const* message)
}
SetColor(stdout_stream, _colors[index]);
- utf8printf(stdout_stream ? stdout : stderr, "%s%s\n", message->prefix.c_str(), message->text.c_str());
+ Print(message->prefix + message->text, !stdout_stream);
ResetColor(stdout_stream);
}
else
- utf8printf(stdout_stream ? stdout : stderr, "%s%s\n", message->prefix.c_str(), message->text.c_str());
+ Print(message->prefix + message->text, !stdout_stream);
}
diff --git a/src/common/Logging/AppenderConsole.h b/src/common/Logging/AppenderConsole.h
index 6c6be4b6c59..19c5c211028 100644
--- a/src/common/Logging/AppenderConsole.h
+++ b/src/common/Logging/AppenderConsole.h
@@ -53,6 +53,7 @@ class TC_COMMON_API AppenderConsole : public Appender
private:
void SetColor(bool stdout_stream, ColorTypes color);
void ResetColor(bool stdout_stream);
+ void Print(std::string const& str, bool error);
void _write(LogMessage const* message) override;
bool _colored;
ColorTypes _colors[NUM_ENABLED_LOG_LEVELS];