From 2c63dee86a6c08eba9942d2fe1aee49909416c83 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 24 Aug 2022 10:16:57 +0200 Subject: [PATCH] Avoid trying to log formatted Json if Http bodies are not logged. --- .../org/matrix/android/sdk/internal/di/NetworkModule.kt | 2 +- .../network/interceptors/FormattedJsonHttpLogger.kt | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/di/NetworkModule.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/di/NetworkModule.kt index 113e780e5c..cb2088a145 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/di/NetworkModule.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/di/NetworkModule.kt @@ -42,7 +42,7 @@ internal object NetworkModule { @Provides @JvmStatic fun providesHttpLoggingInterceptor(): HttpLoggingInterceptor { - val logger = FormattedJsonHttpLogger() + val logger = FormattedJsonHttpLogger(BuildConfig.OKHTTP_LOGGING_LEVEL) val interceptor = HttpLoggingInterceptor(logger) interceptor.level = BuildConfig.OKHTTP_LOGGING_LEVEL return interceptor diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt index 2661bd1f70..f8a45b02b9 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt @@ -23,7 +23,9 @@ import org.json.JSONException import org.json.JSONObject import timber.log.Timber -internal class FormattedJsonHttpLogger : HttpLoggingInterceptor.Logger { +internal class FormattedJsonHttpLogger( + private val level: HttpLoggingInterceptor.Level +) : HttpLoggingInterceptor.Logger { companion object { private const val INDENT_SPACE = 2 @@ -39,6 +41,10 @@ internal class FormattedJsonHttpLogger : HttpLoggingInterceptor.Logger { override fun log(@NonNull message: String) { Timber.v(message) + // Try to log formatted Json only if there is a chance that [message] contains Json. + // It can be only the case if we log the bodies of Http requests. + if (level != HttpLoggingInterceptor.Level.BODY) return + if (message.startsWith("{")) { // JSON Detected try {