From 99296a15108f950c60c7864a374e3ef1f5909e76 Mon Sep 17 00:00:00 2001
From: bunnei <bunneidev@gmail.com>
Date: Sat, 17 Dec 2022 23:31:09 -0800
Subject: common: logging: Implement Android logcat backend.

---
 src/common/logging/backend.cpp | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

(limited to 'src/common/logging/backend.cpp')

diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp
index f96c7c2221..6e8e8eb36b 100644
--- a/src/common/logging/backend.cpp
+++ b/src/common/logging/backend.cpp
@@ -155,6 +155,26 @@ public:
     void EnableForStacktrace() override {}
 };
 
+#ifdef ANDROID
+/**
+ * Backend that writes to the Android logcat
+ */
+class LogcatBackend : public Backend {
+public:
+    explicit LogcatBackend() = default;
+
+    ~LogcatBackend() override = default;
+
+    void Write(const Entry& entry) override {
+        PrintMessageToLogcat(entry);
+    }
+
+    void Flush() override {}
+
+    void EnableForStacktrace() override {}
+};
+#endif
+
 bool initialization_in_progress_suppress_logging = true;
 
 /**
@@ -260,6 +280,9 @@ private:
         lambda(static_cast<Backend&>(debugger_backend));
         lambda(static_cast<Backend&>(color_console_backend));
         lambda(static_cast<Backend&>(file_backend));
+#ifdef ANDROID
+        lambda(static_cast<Backend&>(lc_backend));
+#endif
     }
 
     static void Deleter(Impl* ptr) {
@@ -272,6 +295,9 @@ private:
     DebuggerBackend debugger_backend{};
     ColorConsoleBackend color_console_backend{};
     FileBackend file_backend;
+#ifdef ANDROID
+    LogcatBackend lc_backend{};
+#endif
 
     MPSCQueue<Entry> message_queue{};
     std::chrono::steady_clock::time_point time_origin{std::chrono::steady_clock::now()};
-- 
cgit v1.2.3-70-g09d2