diff --git a/src/client/ring_signal.cpp b/src/client/ring_signal.cpp
index d8f91e9dce638abdc473b42e63301b88a98347e4..9a0d75dcbf10cb756cafd87b4262e691b663aa30 100644
--- a/src/client/ring_signal.cpp
+++ b/src/client/ring_signal.cpp
@@ -26,6 +26,10 @@ SignalHandlerMap&
 getSignalHandlers()
 {
     static SignalHandlerMap handlers = {
+#ifdef WIN32_NATIVE
+        /* UWP Debug */
+        exported_callback<DRing::Debug::MessageSend>(),
+#endif
         /* Call */
         exported_callback<DRing::CallSignal::StateChange>(),
         exported_callback<DRing::CallSignal::TransferFailed>(),
diff --git a/src/dring/callmanager_interface.h b/src/dring/callmanager_interface.h
index a1c1cba9079e9ab7e58672617701f5aa6a1f63c7..7a2830d3c932be29c60df31b6f75cdc8828ad084 100644
--- a/src/dring/callmanager_interface.h
+++ b/src/dring/callmanager_interface.h
@@ -94,6 +94,16 @@ void acceptEnrollment(const std::string& callID, bool accepted);
 /* Instant messaging */
 void sendTextMessage(const std::string& callID, const std::map<std::string, std::string>& messages, const std::string& from, bool isMixed);
 
+#ifdef WIN32_NATIVE
+/* Debug for UWP Client */
+struct Debug {
+    struct MessageSend {
+        constexpr static const char* name = "MessageSend";
+        using cb_type = void(const std::string&);
+    };
+};
+#endif
+
 // Call signal type definitions
 struct CallSignal {
         struct StateChange {
diff --git a/src/dring/dring.h b/src/dring/dring.h
index ff8b8fa550d8955bedc333f94be12a5b8726d3a6..f70ae30bcc183038f702a04e5c6ae78ae710f488 100644
--- a/src/dring/dring.h
+++ b/src/dring/dring.h
@@ -46,9 +46,10 @@ const char* version() noexcept;
  * Initialize globals, create underlaying daemon.
  *
  * @param flags  Flags to customize this initialization
+ * @param app_path  Universal Windows Platform Application path
  * @returns      true if initialization succeed else false.
  */
-bool init(enum InitFlag flags) noexcept;
+bool init(enum InitFlag flags, const char* app_path = "") noexcept;
 
 /**
  * Start asynchronously daemon created by init().
diff --git a/src/logger.cpp b/src/logger.cpp
index c7a2094ac9a3632df335e1a5f247931c516570b1..222ee91374a800c5b60d4c9c3e21176287741faf 100644
--- a/src/logger.cpp
+++ b/src/logger.cpp
@@ -49,6 +49,7 @@
 
 #if defined _WIN32 || defined WIN32_NATIVE
 #include "winsyslog.h"
+#include "client\ring_signal.h"
 #endif
 
 #define BLACK "\033[22;30m"
@@ -205,6 +206,11 @@ vlogger(const int level, const char *format, va_list ap)
             std::string ctx(format, sep - format);
             format = sep + 2;
             fputs(getHeader(ctx.c_str()).c_str(), stderr);
+#ifdef WIN32_NATIVE
+            char tmp[2048];
+            vsprintf(tmp, format, ap);
+            ring::emitSignal<DRing::Debug::MessageSend>(getHeader(ctx.c_str()).c_str() + std::string(tmp));
+#endif
 #ifndef _WIN32
             fputs(END_COLOR, stderr);
 #else
diff --git a/src/logger.h b/src/logger.h
index ab36b2c8443e038083a408b9586ed807418445c1..f3604df8539a64f0294c45f55050af017f2dc673 100644
--- a/src/logger.h
+++ b/src/logger.h
@@ -72,7 +72,11 @@ void strErr();
 #define XSTR(X) STR(X)
 
 // Line return char in a string
+#ifdef WIN32_NATIVE
+#define ENDL " "
+#else
 #define ENDL "\n"
+#endif
 
 // Do not remove the "| " in following without modifying vlogger() code
 #ifndef WIN32_NATIVE
diff --git a/src/ring_api.cpp b/src/ring_api.cpp
index 9e5524a9d26c8fa4ef7ed302747167b7dd5bba0b..ca278fc39b34fb357398779ac22008dbe0a7af9c 100644
--- a/src/ring_api.cpp
+++ b/src/ring_api.cpp
@@ -42,7 +42,7 @@
 namespace DRing {
 
 bool
-init(enum InitFlag flags) noexcept
+init(enum InitFlag flags, const char* app_path) noexcept
 {
     ::setDebugMode(flags & DRING_FLAG_DEBUG);
     ::setConsoleLog(flags & DRING_FLAG_CONSOLE_LOG);
@@ -55,6 +55,9 @@ init(enum InitFlag flags) noexcept
     try {
         // current implementation use static variable
         auto& manager = ring::Manager::instance();
+#ifdef WIN32_NATIVE
+        manager.setUWPAppPath(app_path);
+#endif
         manager.setAutoAnswer(flags & DRING_FLAG_AUTOANSWER);
         return true;
     } catch (...) {