diff --git a/app/src/main/java/eu/faircode/email/ApplicationEx.java b/app/src/main/java/eu/faircode/email/ApplicationEx.java index f10dba55fa..fc0945fcb9 100644 --- a/app/src/main/java/eu/faircode/email/ApplicationEx.java +++ b/app/src/main/java/eu/faircode/email/ApplicationEx.java @@ -415,6 +415,7 @@ public class ApplicationEx extends Application break; case "debug": case "log_level": + Log.setLevel(this); FairEmailLoggingProvider.setLevel(this); break; } diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 53483475cf..0dce2e63c5 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -5182,10 +5182,6 @@ class Core { if (EntityFolder.DRAFTS.equals(folder.type)) return null; - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - int level = prefs.getInt("log_level", android.util.Log.INFO); - boolean log = (level <= android.util.Log.INFO || BuildConfig.DEBUG); - List
addresses = new ArrayList<>(); if (folder.isOutgoing()) { if (message.from != null) @@ -5215,44 +5211,40 @@ class Core { for (Address address : addresses) for (EntityIdentity identity : identities) if (identity.sameAddress(address)) { - if (log) - Log.i("Matched same" + - " identity=" + identity.email + - " address=" + ((InternetAddress) address).getAddress() + - " folder=" + folder.name); + Log.i("Matched same" + + " identity=" + identity.email + + " address=" + ((InternetAddress) address).getAddress() + + " folder=" + folder.name); return identity; } for (Address address : addresses) for (EntityIdentity identity : identities) if (identity.similarAddress(address)) { - if (log) - Log.i("Matched similar" + - " identity=" + identity.email + - " regex=" + identity.sender_extra_regex + - " address=" + ((InternetAddress) address).getAddress() + - " folder=" + folder.name); + Log.i("Matched similar" + + " identity=" + identity.email + + " regex=" + identity.sender_extra_regex + + " address=" + ((InternetAddress) address).getAddress() + + " folder=" + folder.name); return identity; } if (deliveredto != null) for (EntityIdentity identity : identities) if (identity.sameAddress(deliveredto) || identity.similarAddress(deliveredto)) { - if (log) - Log.i("Matched deliveredto" + - " identity=" + identity.email + - " regex=" + identity.sender_extra_regex + - " address=" + ((InternetAddress) deliveredto).getAddress() + - " folder=" + folder.name); + Log.i("Matched deliveredto" + + " identity=" + identity.email + + " regex=" + identity.sender_extra_regex + + " address=" + ((InternetAddress) deliveredto).getAddress() + + " folder=" + folder.name); return identity; } } - if (log) - Log.i("Matched none" + - " addresses=" + MessageHelper.formatAddresses(addresses.toArray(new Address[0])) + - " deliveredto=" + (deliveredto == null ? null : ((InternetAddress) deliveredto).getAddress()) + - " folder=" + folder.name); + Log.i("Matched none" + + " addresses=" + MessageHelper.formatAddresses(addresses.toArray(new Address[0])) + + " deliveredto=" + (deliveredto == null ? null : ((InternetAddress) deliveredto).getAddress()) + + " folder=" + folder.name); return null; } diff --git a/app/src/main/java/eu/faircode/email/FairEmailLoggingProvider.java b/app/src/main/java/eu/faircode/email/FairEmailLoggingProvider.java index 917f535fa1..e49a1627a0 100644 --- a/app/src/main/java/eu/faircode/email/FairEmailLoggingProvider.java +++ b/app/src/main/java/eu/faircode/email/FairEmailLoggingProvider.java @@ -77,8 +77,7 @@ public class FairEmailLoggingProvider extends TinylogLoggingProvider { if (debug) provider.activeLevel = Level.DEBUG; else { - int def = (BuildConfig.DEBUG || BuildConfig.TEST_RELEASE ? android.util.Log.INFO : android.util.Log.WARN); - int _level = prefs.getInt("log_level", def); + int _level = prefs.getInt("log_level", Log.getDefaultLogLevel()); if (_level == android.util.Log.VERBOSE) provider.activeLevel = Level.TRACE; else if (_level == android.util.Log.DEBUG) diff --git a/app/src/main/java/eu/faircode/email/Log.java b/app/src/main/java/eu/faircode/email/Log.java index 6e03ef01a4..5fa17efbab 100644 --- a/app/src/main/java/eu/faircode/email/Log.java +++ b/app/src/main/java/eu/faircode/email/Log.java @@ -123,6 +123,8 @@ public class Log { System.loadLibrary("fairemail"); } + public static native void jni_set_log_level(int level); + public static native long[] jni_safe_runtime_stats(); public static int d(String msg) { @@ -338,9 +340,20 @@ public class Log { static void setup(Context context) { ctx = context; + setLevel(context); setupBugsnag(context); } + static void setLevel(Context context) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + int level = prefs.getInt("log_level", getDefaultLogLevel()); + jni_set_log_level(level); + } + + static int getDefaultLogLevel() { + return (BuildConfig.DEBUG || BuildConfig.TEST_RELEASE ? android.util.Log.INFO : android.util.Log.WARN); + } + private static void setupBugsnag(final Context context) { try { Log.i("Configuring Bugsnag"); diff --git a/app/src/main/jni/fairemail.cc b/app/src/main/jni/fairemail.cc index 9215876fde..0a717640f6 100644 --- a/app/src/main/jni/fairemail.cc +++ b/app/src/main/jni/fairemail.cc @@ -12,8 +12,16 @@ #include "compact_enc_det/compact_enc_det.h" #include "cld_3/src/nnet_language_identifier.h" +int log_level = ANDROID_LOG_DEBUG; + +extern "C" +JNIEXPORT void JNICALL +Java_eu_faircode_email_Log_jni_1set_1log_1level(JNIEnv *env, jclass clazz, jint level) { + log_level = level; +} + void log_android(int prio, const char *fmt, ...) { - if (prio >= ANDROID_LOG_DEBUG) { + if (prio >= log_level) { char line[1024]; va_list argptr; va_start(argptr, fmt);