From fd2e84640b2be52f97f48d818d26fc1289a50c7a Mon Sep 17 00:00:00 2001 From: crupest Date: Tue, 19 Oct 2021 22:33:01 +0800 Subject: ... --- src/common/Logger.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/common/Logger.cpp') diff --git a/src/common/Logger.cpp b/src/common/Logger.cpp index 6ba5d578..3034c0ad 100644 --- a/src/common/Logger.cpp +++ b/src/common/Logger.cpp @@ -3,7 +3,9 @@ #include #include #include +#include #include +#include #include namespace cru::log { @@ -76,4 +78,31 @@ void Logger::Log(LogLevel level, StringView tag, StringView message) { LogLevelToString(level), tag, message)); } } + +namespace { +std::mutex stdio_lock; + +void WriteStdio(LogLevel level, StringView s) { + std::string m = s.ToString().ToUtf8(); + + if (level == LogLevel::Error) { + std::cerr << m; + } else { + std::cout << m; + } +} +} // namespace + +StdioLogSource::StdioLogSource(bool use_lock) : use_lock_(use_lock) {} + +StdioLogSource::~StdioLogSource() {} + +void StdioLogSource::Write(LogLevel level, StringView s) { + if (use_lock_) { + std::lock_guard guard(stdio_lock); + WriteStdio(level, s); + } else { + WriteStdio(level, s); + } +} } // namespace cru::log -- cgit v1.2.3