android/LogListener: pass formatted message to OnLog()

This commit is contained in:
Max Kellermann 2021-05-27 16:19:46 +02:00
parent 4db882f666
commit 4d32454697
3 changed files with 10 additions and 14 deletions

View File

@ -183,9 +183,14 @@ Log(LogLevel level, const Domain &domain, const char *msg) noexcept
#ifdef ANDROID #ifdef ANDROID
__android_log_print(ToAndroidLogLevel(level), "MPD", __android_log_print(ToAndroidLogLevel(level), "MPD",
"%s: %s", domain.GetName(), msg); "%s: %s", domain.GetName(), msg);
if (logListener != nullptr) if (logListener != nullptr) {
char buffer[1024];
snprintf(buffer, sizeof(buffer), "%s: %s",
domain.GetName(), msg);
logListener->OnLog(Java::GetEnv(), ToAndroidLogLevel(level), logListener->OnLog(Java::GetEnv(), ToAndroidLogLevel(level),
"%s: %s", domain.GetName(), msg); buffer);
}
#else #else
if (level < log_threshold) if (level < log_threshold)

View File

@ -20,8 +20,6 @@
#include "LogListener.hxx" #include "LogListener.hxx"
#include "java/Class.hxx" #include "java/Class.hxx"
#include "java/String.hxx" #include "java/String.hxx"
#include "util/AllocatedString.hxx"
#include "util/FormatString.hxx"
LogListener::LogListener(JNIEnv *env, jobject obj) noexcept LogListener::LogListener(JNIEnv *env, jobject obj) noexcept
:Java::GlobalObject(env, obj) :Java::GlobalObject(env, obj)
@ -33,16 +31,10 @@ LogListener::LogListener(JNIEnv *env, jobject obj) noexcept
} }
void void
LogListener::OnLog(JNIEnv *env, int priority, LogListener::OnLog(JNIEnv *env, int priority, const char *msg) const noexcept
const char *fmt, ...) const noexcept
{ {
assert(env != nullptr); assert(env != nullptr);
std::va_list args;
va_start(args, fmt);
const auto log = FormatStringV(fmt, args);
va_end(args);
env->CallVoidMethod(Get(), onLogMethod, priority, env->CallVoidMethod(Get(), onLogMethod, priority,
Java::String(env, log.c_str()).Get()); Java::String(env, msg).Get());
} }

View File

@ -28,8 +28,7 @@ class LogListener : public Java::GlobalObject {
public: public:
LogListener(JNIEnv *env, jobject obj) noexcept; LogListener(JNIEnv *env, jobject obj) noexcept;
void OnLog(JNIEnv *env, int priority, void OnLog(JNIEnv *env, int priority, const char *msg) const noexcept;
const char *fmt, ...) const noexcept;
}; };
#endif #endif