From 8cec528ac7f95bf998c6d45254284264be816d20 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 24 Aug 2022 10:11:24 +0200 Subject: [PATCH 1/4] Only one FormatterJsonHttpLogger implementation is required. --- .../interceptors/FormattedJsonHttpLogger.kt | 0 .../interceptors/FormattedJsonHttpLogger.kt | 30 ------------------- 2 files changed, 30 deletions(-) rename matrix-sdk-android/src/{debug => main}/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt (100%) delete mode 100644 matrix-sdk-android/src/release/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt diff --git a/matrix-sdk-android/src/debug/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 similarity index 100% rename from matrix-sdk-android/src/debug/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt rename to matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt diff --git a/matrix-sdk-android/src/release/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt b/matrix-sdk-android/src/release/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt deleted file mode 100644 index a815cec353..0000000000 --- a/matrix-sdk-android/src/release/java/org/matrix/android/sdk/internal/network/interceptors/FormattedJsonHttpLogger.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2020 The Matrix.org Foundation C.I.C. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.matrix.android.sdk.internal.network.interceptors - -import androidx.annotation.NonNull -import okhttp3.logging.HttpLoggingInterceptor - -/** - * No op logger - */ -internal class FormattedJsonHttpLogger : HttpLoggingInterceptor.Logger { - - @Synchronized - override fun log(@NonNull message: String) { - } -} From 2c63dee86a6c08eba9942d2fe1aee49909416c83 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 24 Aug 2022 10:16:57 +0200 Subject: [PATCH 2/4] 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 { From 5d711793ada549c287abf4324a32d31272db5bfe Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 24 Aug 2022 12:39:58 +0200 Subject: [PATCH 3/4] Changelog --- changelog.d/6925.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/6925.misc diff --git a/changelog.d/6925.misc b/changelog.d/6925.misc new file mode 100644 index 0000000000..f494b76b56 --- /dev/null +++ b/changelog.d/6925.misc @@ -0,0 +1 @@ +Log basic Http information in production. From 66a6018a93ec35aeed708187510835d1528549d9 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 24 Aug 2022 14:06:35 +0200 Subject: [PATCH 4/4] Detekt --- .../internal/network/interceptors/FormattedJsonHttpLogger.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 f8a45b02b9..4e0525536c 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 @@ -32,8 +32,8 @@ internal class FormattedJsonHttpLogger( } /** - * Log the message and try to log it again as a JSON formatted string - * Note: it can consume a lot of memory but it is only in DEBUG mode + * Log the message and try to log it again as a JSON formatted string. + * Note: it can consume a lot of memory but it is only in DEBUG mode. * * @param message */