Skip to content

Overrides HttpLoggingInterceptor or Logger on DefaultClient #763

Open
@RafaelMagalhaesN

Description

@RafaelMagalhaesN

Checklist

  • I have looked into the Readme, Examples, and FAQ and have not found a suitable solution or answer.
  • I have looked into the API documentation and have not found a suitable solution or answer.
  • I have searched the issues and have not found a suitable solution or answer.
  • I have searched the Auth0 Community forums and have not found a suitable solution or answer.
  • I agree to the terms within the Auth0 Code of Conduct.

Describe the problem you'd like to have solved

Hello,
I'm looking at the DefaultClient implementation, and there isn't a way to override logs emitted by Auth0 requests.
In the current implementation, the HttpLoggingInterceptor has been built inside the init of DefaultClient and cannot be overridden. And I don't want to implement something similar to this just to override the log output.
We need it in the company to logs out a few breadcrumbs to our secure log vault.

Describe the ideal solution

I'd suggest to include two different ways:
1:

package com.auth0.android.request
// code..
public class DefaultClient @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) internal constructor(
    connectTimeout: Int,
    readTimeout: Int,
    private val defaultHeaders: Map<String, String>,
    enableLogging: Boolean,
    private val gson: Gson,
    sslSocketFactory: SSLSocketFactory?,
    trustManager: X509TrustManager?,
    logger: HttpLoggingInterceptor = Interceptor = HttpLoggingInterceptor()
            .setLevel(HttpLoggingInterceptor.Level.BODY)
) : NetworkingClient {
// code 
   init {
        // code
        if (enableLogging) {
          // remove it
          //  val logger: Interceptor = HttpLoggingInterceptor()
           //    .setLevel(HttpLoggingInterceptor.Level.BODY)
            builder.addInterceptor(logger)
        }

        // code
    }
  

}

or

2:

package com.auth0.android.request
// code..
public class DefaultClient @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) internal constructor(
    connectTimeout: Int,
    readTimeout: Int,
    private val defaultHeaders: Map<String, String>,
    enableLogging: Boolean,
    private val gson: Gson,
    sslSocketFactory: SSLSocketFactory?,
    trustManager: X509TrustManager?,
    defaultLogger: Logger = Logger.DEFAULT
) : NetworkingClient {
// code 
   init {
        // code
        if (enableLogging) {
          
            val logger: Interceptor = HttpLoggingInterceptor(defaultLogger)
                  .setLevel(HttpLoggingInterceptor.Level.BODY)
            builder.addInterceptor(logger)
        }

        // code
    }
  

}

Alternatives and current workarounds

That is possible to create a custom NetworkingClient object and that include the HttpLoggingInteceptor by my own, but for a simple log, I guess DefaultClient could provide it

Additional context

We are going to use it in our Dev Env

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature requestA feature has been asked for or suggested by the community

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions