将日志记录添加到 Retrofit2
可以使用截取器记录改造请求。有几个级别的细节:NONE,BASIC,HEADERS,BODY。在这里查看 Github 项目 。
- 向 build.gradle 添加依赖项:
compile 'com.squareup.okhttp3:logging-interceptor:3.8.1'
- 创建 Retrofit 时添加日志记录拦截器:
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(LoggingInterceptor.Level.BODY);
OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
.addInterceptor(loggingInterceptor)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://example.com/")
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
在发布版本中应该避免将日志暴露在终端(Android 监视器)中,因为它可能会导致不必要地暴露关键信息,例如 Auth Tokens 等。
要避免在运行时暴露日志,请检查以下条件
if(BuildConfig.DEBUG){
//your interfector code here
}
例如:
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
if(BuildConfig.DEBUG){
//print the logs in this case
loggingInterceptor.setLevel(LoggingInterceptor.Level.BODY);
}else{
loggingInterceptor.setLevel(LoggingInterceptor.Level.NONE);
}
OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
.addInterceptor(loggingInterceptor)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://example.com/")
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();