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