diff --git a/src/cheogram/java/com/cheogram/android/AndroidLoggingHandler.java b/src/cheogram/java/com/cheogram/android/AndroidLoggingHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..5af3b97e396cc6c072bbf3ba119aba51df396ee0 --- /dev/null +++ b/src/cheogram/java/com/cheogram/android/AndroidLoggingHandler.java @@ -0,0 +1,63 @@ +package com.cheogram.android; + +import android.util.Log; +import java.util.logging.*; + +/** + * Make JUL work on Android. + * https://stackoverflow.com/a/9047282/8611 + */ +public class AndroidLoggingHandler extends Handler { + + public static void reset(Handler rootHandler) { + Logger rootLogger = LogManager.getLogManager().getLogger(""); + Handler[] handlers = rootLogger.getHandlers(); + for (Handler handler : handlers) { + rootLogger.removeHandler(handler); + } + rootLogger.addHandler(rootHandler); + } + + @Override + public void close() { + } + + @Override + public void flush() { + } + + @Override + public void publish(LogRecord record) { + if (!super.isLoggable(record)) + return; + + String name = record.getLoggerName(); + int maxLength = 30; + String tag = name.length() > maxLength ? name.substring(name.length() - maxLength) : name; + + try { + int level = getAndroidLevel(record.getLevel()); + final var msg = new SimpleFormatter().format(record); + Log.println(level, tag, msg); + if (record.getThrown() != null) { + Log.println(level, tag, Log.getStackTraceString(record.getThrown())); + } + } catch (RuntimeException e) { + Log.e("AndroidLoggingHandler", "Error logging message.", e); + } + } + + static int getAndroidLevel(Level level) { + int value = level.intValue(); + + if (value >= Level.SEVERE.intValue()) { + return Log.ERROR; + } else if (value >= Level.WARNING.intValue()) { + return Log.WARN; + } else if (value >= Level.INFO.intValue()) { + return Log.INFO; + } else { + return Log.DEBUG; + } + } +} diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 2dd467ed05c5fbc82c43aaf87d858f48b080a2e9..f2ba07b12ac19354ad476e508581c7ed136454bb 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1497,6 +1497,8 @@ public class XmppConnectionService extends Service { @SuppressLint("TrulyRandom") @Override public void onCreate() { + com.cheogram.android.AndroidLoggingHandler.reset(new com.cheogram.android.AndroidLoggingHandler()); + java.util.logging.Logger.getLogger("").setLevel(java.util.logging.Level.FINEST); LibIdnXmppStringprep.setup(); emojiSearch = new EmojiSearch(this); setTheme(R.style.Theme_Conversations3);