HttpLoggingInterceptor for http request & response logging

前端 未结 3 940
后悔当初
后悔当初 2021-01-13 19:37

I\'m using retrofit2 and I need to log all request and response. Request and response works perfectly, All I need is to log those request/response, I tried almost every solu

3条回答
  •  一整个雨季
    2021-01-13 19:44

    I it would be better to add interceptors while creating client using Builder as below code. If you notice we add two interceptors - Network interceptor > addNetworkInterceptor - Interceptor > addInterceptor

    The main difference is network interceptor only works when there is a real request (not loading from caching). Interceptor log data on both cases loading from network or cache.

    Also make sure you are imorting the correct BuildConfig (sometimes autocompletion import it from one of your libraries, then it will be always false)

    `OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
    if (BuildConfig.DEBUG) {
                HttpLoggingInterceptor.Logger networkLayerLogger = new HttpLoggingInterceptor.Logger() {
                    @Override
                    public void log(String message) {
                        LogUtils.d("NetworkLayer", message);
                    }
                };
    
                HttpLoggingInterceptor.Logger appLayerLogger = new HttpLoggingInterceptor.Logger() {
                @Override
                public void log(String message) {
                    LogUtils.d("ApplicationLayer", message);
                }
            };
            HttpLoggingInterceptor networkLogging = new HttpLoggingInterceptor(networkLayerLogger);
            HttpLoggingInterceptor appLogging = new HttpLoggingInterceptor(appLayerLogger);
    
            networkLogging.setLevel(HttpLoggingInterceptor.Level.HEADERS);
            appLogging.setLevel(HttpLoggingInterceptor.Level.BODY);
    
            clientBuilder.addNetworkInterceptor(networkLogging);
            clientBuilder.addInterceptor(appLogging);
        }
    

    `

提交回复
热议问题