From 6b655d64db25fcf32130f5b9e35d11ee3bfca167 Mon Sep 17 00:00:00 2001 From: Murat Seker Date: Fri, 9 Jun 2023 06:26:52 -0700 Subject: [PATCH] Custom log handler setup Summary: Add custom log handler setup so people can use their own log infra instead of "printf". Reviewed By: Neil-Clifford-FB Differential Revision: D46590343 fbshipit-source-id: ded9cf6caa580d477a71a9155cad9db295151c84 --- xplat/Flipper/Log.cpp | 19 +++++++++++++++++++ xplat/Flipper/Log.h | 6 ++++++ 2 files changed, 25 insertions(+) diff --git a/xplat/Flipper/Log.cpp b/xplat/Flipper/Log.cpp index c365a3ee2..f432bc646 100644 --- a/xplat/Flipper/Log.cpp +++ b/xplat/Flipper/Log.cpp @@ -14,7 +14,26 @@ namespace facebook { namespace flipper { +namespace { +static LogHandlerFunc* getHandle() { + static LogHandlerFunc sHandler = defaultLogHandler; + return &sHandler; +} +} // namespace + void log(const std::string& message) { + return (*getHandle())(message); +} + +void setLogHandler(LogHandlerFunc handler) { + *getHandle() = handler; +} + +LogHandlerFunc getLogHandler() { + return *getHandle(); +} + +void defaultLogHandler(const std::string& message) { #ifdef __ANDROID__ __android_log_print( ANDROID_LOG_INFO, "flipper", "flipper: %s", message.c_str()); diff --git a/xplat/Flipper/Log.h b/xplat/Flipper/Log.h index e6928df22..ad898cf2c 100644 --- a/xplat/Flipper/Log.h +++ b/xplat/Flipper/Log.h @@ -14,5 +14,11 @@ namespace flipper { void log(const std::string& message); +using LogHandlerFunc = void (*)(const std::string& message); + +void setLogHandler(LogHandlerFunc handler); +LogHandlerFunc getLogHandler(); +void defaultLogHandler(const std::string& message); + } // namespace flipper } // namespace facebook