From aa66d2d9c0700bf89fd708ce72c4b2689a9f70d2 Mon Sep 17 00:00:00 2001 From: tobrun Date: Thu, 12 Jul 2018 14:45:18 +0200 Subject: [android] - enable error severity logging of timber --- platform/android/config.cmake | 2 ++ platform/android/src/jni.cpp | 4 ++++ platform/android/src/logging_android.cpp | 7 ++++++- platform/android/src/native_map_view.cpp | 3 +++ platform/android/src/timber.cpp | 20 ++++++++++++++++++++ platform/android/src/timber.hpp | 24 ++++++++++++++++++++++++ 6 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 platform/android/src/timber.cpp create mode 100644 platform/android/src/timber.hpp diff --git a/platform/android/config.cmake b/platform/android/config.cmake index fa26987e5a..ce97bd8426 100644 --- a/platform/android/config.cmake +++ b/platform/android/config.cmake @@ -43,6 +43,8 @@ macro(mbgl_platform_core) PRIVATE platform/android/src/text/local_glyph_rasterizer_jni.hpp PRIVATE platform/android/src/logging_android.cpp PRIVATE platform/android/src/thread.cpp + PRIVATE platform/android/src/timber.cpp + PRIVATE platform/android/src/timber.hpp PRIVATE platform/default/string_stdlib.cpp PRIVATE platform/default/bidi.cpp PRIVATE platform/default/thread_local.cpp diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp index beb2c14eb3..43fad77b46 100755 --- a/platform/android/src/jni.cpp +++ b/platform/android/src/jni.cpp @@ -49,6 +49,7 @@ #include "text/collator_jni.hpp" #include "text/local_glyph_rasterizer_jni.hpp" #include "java/lang.hpp" +#include "timber.hpp" namespace mbgl { namespace android { @@ -191,6 +192,9 @@ void registerNatives(JavaVM *vm) { LocalGlyphRasterizer::registerNative(env); Locale::registerNative(env); Collator::registerNative(env); + + // log + Timber::registerNative(env); } } // namespace android diff --git a/platform/android/src/logging_android.cpp b/platform/android/src/logging_android.cpp index 2e025c059f..786bb39c52 100644 --- a/platform/android/src/logging_android.cpp +++ b/platform/android/src/logging_android.cpp @@ -1,6 +1,8 @@ #include #include +#include "timber.hpp" +#include "attach_env.hpp" namespace mbgl { @@ -29,6 +31,9 @@ int severityToPriority(EventSeverity severity) { void Log::platformRecord(EventSeverity severity, const std::string &msg) { __android_log_print(severityToPriority(severity), "mbgl", "%s", msg.c_str()); + if(severity == EventSeverity::Error) { + auto env{ android::AttachEnv() }; + android::Timber::logError(*env, jni::Make(*env, msg.c_str())); + } } - } diff --git a/platform/android/src/native_map_view.cpp b/platform/android/src/native_map_view.cpp index c648a22893..b7c9cbb932 100755 --- a/platform/android/src/native_map_view.cpp +++ b/platform/android/src/native_map_view.cpp @@ -52,6 +52,7 @@ #include "map/image.hpp" #include "style/light.hpp" #include "bitmap_factory.hpp" +#include "timber.hpp" namespace mbgl { namespace android { @@ -72,6 +73,8 @@ NativeMapView::NativeMapView(jni::JNIEnv& _env, return; } + Timber::logError(_env, jni::Make(_env, "hello world")); + // Get native peer for file source mbgl::FileSource& fileSource = mbgl::android::FileSource::getDefaultFileSource(_env, jFileSource); diff --git a/platform/android/src/timber.cpp b/platform/android/src/timber.cpp new file mode 100644 index 0000000000..1a96dc3c5e --- /dev/null +++ b/platform/android/src/timber.cpp @@ -0,0 +1,20 @@ +#include "timber.hpp" +#include "java_types.hpp" + +namespace mbgl { +namespace android { + +void Timber::registerNative(jni::JNIEnv& env) { + _class = *jni::Class::Find(env).NewGlobalRef(env).release(); +} + +jni::Class Timber::_class; + +void Timber::logError(jni::JNIEnv& env, jni::String error) { + using Signature = void(jni::String, jni::Array>); + auto method = _class.GetStaticMethod(env, "e"); + return _class.Call(env, method, error, jni::Array>()); +} + +} // namespace android +} // namespace mbgl diff --git a/platform/android/src/timber.hpp b/platform/android/src/timber.hpp new file mode 100644 index 0000000000..1acaf39c13 --- /dev/null +++ b/platform/android/src/timber.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include + +#include "bitmap.hpp" + +namespace mbgl { +namespace android { + +class Timber { +public: + static constexpr auto Name() { + return "timber/log/Timber"; + }; + static void registerNative(jni::JNIEnv&); + + static void logError(jni::JNIEnv&, jni::String error); + + private: + static jni::Class _class; + }; + +} // namespace android +} // namespace mbgl -- cgit v1.2.1