From 55ea3ccbe309f398d71562c57513d9f16e17a240 Mon Sep 17 00:00:00 2001 From: Roman Zavarnitsyn Date: Wed, 16 Oct 2024 12:14:52 +0200 Subject: [PATCH] [QA] Make logging faster on startup (#3793) * Make logging faster on startup * Changelog --- CHANGELOG.md | 1 + .../io/sentry/android/core/AndroidLogger.java | 12 ++++++++++-- .../android/core/ManifestMetadataReader.java | 17 ++++++++--------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f3171a03b..1fe35c8e0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - Vendor `java.util.Random` and replace `java.security.SecureRandom` usages ([#3783](https://github.com/getsentry/sentry-java/pull/3783)) - Fix potential ANRs due to NDK scope sync ([#3754](https://github.com/getsentry/sentry-java/pull/3754)) - Fix potential ANRs due to NDK System.loadLibrary calls ([#3670](https://github.com/getsentry/sentry-java/pull/3670)) +- Fix slow `Log` calls on app startup ([#3793](https://github.com/getsentry/sentry-java/pull/3793)) ## 7.15.0 diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/AndroidLogger.java b/sentry-android-core/src/main/java/io/sentry/android/core/AndroidLogger.java index b0f6b8ac92..ef943c1696 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/AndroidLogger.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/AndroidLogger.java @@ -26,7 +26,11 @@ public void log( final @NotNull SentryLevel level, final @NotNull String message, final @Nullable Object... args) { - Log.println(toLogcatLevel(level), tag, String.format(message, args)); + if (args == null || args.length == 0) { + Log.println(toLogcatLevel(level), tag, message); + } else { + Log.println(toLogcatLevel(level), tag, String.format(message, args)); + } } @SuppressWarnings("AnnotateFormatMethod") @@ -36,7 +40,11 @@ public void log( final @Nullable Throwable throwable, final @NotNull String message, final @Nullable Object... args) { - log(level, String.format(message, args), throwable); + if (args == null || args.length == 0) { + log(level, message, throwable); + } else { + log(level, String.format(message, args), throwable); + } } @Override diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java index 56cd506fe6..babcfdfc98 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/ManifestMetadataReader.java @@ -437,7 +437,7 @@ private static boolean readBool( final @NotNull String key, final boolean defaultValue) { final boolean value = metadata.getBoolean(key, defaultValue); - logger.log(SentryLevel.DEBUG, "%s read: %s", key, value); + logger.log(SentryLevel.DEBUG, key + " read: " + value); return value; } @@ -450,10 +450,10 @@ private static boolean readBool( if (metadata.getSerializable(key) != null) { final boolean nonNullDefault = defaultValue == null ? false : true; final boolean bool = metadata.getBoolean(key, nonNullDefault); - logger.log(SentryLevel.DEBUG, "%s read: %s", key, bool); + logger.log(SentryLevel.DEBUG, key + " read: " + bool); return bool; } else { - logger.log(SentryLevel.DEBUG, "%s used default %s", key, defaultValue); + logger.log(SentryLevel.DEBUG, key + " used default " + defaultValue); return defaultValue; } } @@ -464,7 +464,7 @@ private static boolean readBool( final @NotNull String key, final @Nullable String defaultValue) { final String value = metadata.getString(key, defaultValue); - logger.log(SentryLevel.DEBUG, "%s read: %s", key, value); + logger.log(SentryLevel.DEBUG, key + " read: " + value); return value; } @@ -474,14 +474,14 @@ private static boolean readBool( final @NotNull String key, final @NotNull String defaultValue) { final String value = metadata.getString(key, defaultValue); - logger.log(SentryLevel.DEBUG, "%s read: %s", key, value); + logger.log(SentryLevel.DEBUG, key + " read: " + value); return value; } private static @Nullable List readList( final @NotNull Bundle metadata, final @NotNull ILogger logger, final @NotNull String key) { final String value = metadata.getString(key); - logger.log(SentryLevel.DEBUG, "%s read: %s", key, value); + logger.log(SentryLevel.DEBUG, key + " read: " + value); if (value != null) { return Arrays.asList(value.split(",", -1)); } else { @@ -493,7 +493,7 @@ private static boolean readBool( final @NotNull Bundle metadata, final @NotNull ILogger logger, final @NotNull String key) { // manifest meta-data only reads float final Double value = ((Float) metadata.getFloat(key, -1)).doubleValue(); - logger.log(SentryLevel.DEBUG, "%s read: %s", key, value); + logger.log(SentryLevel.DEBUG, key + " read: " + value); return value; } @@ -504,7 +504,7 @@ private static long readLong( final long defaultValue) { // manifest meta-data only reads int if the value is not big enough final long value = metadata.getInt(key, (int) defaultValue); - logger.log(SentryLevel.DEBUG, "%s read: %s", key, value); + logger.log(SentryLevel.DEBUG, key + " read: " + value); return value; } @@ -524,7 +524,6 @@ static boolean isAutoInit(final @NotNull Context context, final @NotNull ILogger if (metadata != null) { autoInit = readBool(metadata, logger, AUTO_INIT, true); } - logger.log(SentryLevel.INFO, "Retrieving auto-init from AndroidManifest.xml"); } catch (Throwable e) { logger.log(SentryLevel.ERROR, "Failed to read auto-init from android manifest metadata.", e); }