aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/common')
-rw-r--r--src/common/CMakeLists.txt3
-rw-r--r--src/common/log/Logger.cpp8
-rw-r--r--src/common/log/StdioLogTarget.cpp5
-rw-r--r--src/common/platform/win/DebugLogTarget.cpp10
4 files changed, 25 insertions, 1 deletions
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 330c7226..ae418f6b 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -37,8 +37,9 @@ if (WIN32)
target_sources(cru_base PRIVATE
platform/win/BridgeComStream.cpp
platform/win/ComAutoInit.cpp
- platform/win/StreamConvert.cpp
+ platform/win/DebugLogTarget.cpp
platform/win/Exception.cpp
+ platform/win/StreamConvert.cpp
platform/win/Win32FileStream.cpp
)
diff --git a/src/common/log/Logger.cpp b/src/common/log/Logger.cpp
index bcafde21..e13cb122 100644
--- a/src/common/log/Logger.cpp
+++ b/src/common/log/Logger.cpp
@@ -5,12 +5,20 @@
#include <cstdlib>
#include <ctime>
+#ifdef CRU_PLATFORM_WINDOWS
+#include "cru/common/platform/win/DebugLogTarget.h"
+#endif
+
namespace cru::log {
Logger *Logger::GetInstance() {
static Logger logger;
logger.AddLogTarget(std::make_unique<StdioLogTarget>());
+#ifdef CRU_PLATFORM_WINDOWS
+ logger.AddLogTarget(std::make_unique<platform::win::WinDebugLogTarget>());
+#endif
+
return &logger;
}
diff --git a/src/common/log/StdioLogTarget.cpp b/src/common/log/StdioLogTarget.cpp
index ad29a3ce..7f99dbd1 100644
--- a/src/common/log/StdioLogTarget.cpp
+++ b/src/common/log/StdioLogTarget.cpp
@@ -9,6 +9,11 @@ StdioLogTarget::~StdioLogTarget() {}
void StdioLogTarget::Write(log::LogLevel level, StringView s) {
#ifdef CRU_PLATFORM_WINDOWS
+ if (level == log::LogLevel::Error) {
+ std::wcerr.write(reinterpret_cast<const wchar_t*>(s.data()), s.size());
+ } else {
+ std::wcout.write(reinterpret_cast<const wchar_t*>(s.data()), s.size());
+ }
#else
std::string m = s.ToUtf8();
diff --git a/src/common/platform/win/DebugLogTarget.cpp b/src/common/platform/win/DebugLogTarget.cpp
new file mode 100644
index 00000000..92d26449
--- /dev/null
+++ b/src/common/platform/win/DebugLogTarget.cpp
@@ -0,0 +1,10 @@
+#include "cru/common/platform/win/DebugLogTarget.h"
+
+namespace cru::platform::win {
+void WinDebugLogTarget::Write(::cru::log::LogLevel level, StringView s) {
+ CRU_UNUSED(level)
+
+ String m = s.ToString();
+ ::OutputDebugStringW(reinterpret_cast<const wchar_t*>(m.c_str()));
+}
+} // namespace cru::platform::win