写在之前
Retrofit已经出现了很长一段时间了,目前最新版本是2.2.0,所以本篇文章也主要是针对Retrofit2的日志拦截
首先,要实现Retrofit的日志拦截功能,你需要在build.gradle中添加
compile 'com.squareup.okhttp3:logging-interceptor:3.6.0'
在开始实现日志功能之前,我们需要知道Retrofit是依赖OkHttp来进行网络请求的,所以,我们拦截日志主要是实现OkHttp的日志记录,那么我们首先要实例一个OkHttpClient.Builder
OkHttpClient.Builder client = new OkHttpClient.Builder();
好了,准备工作做完了,那就开始具体实现日志
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(Level.BODY);
以上代码是初始化日志拦截器,并设置日志Level(这块稍后在说明)
各个子项都准备好了,那么就把他们组合起来
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
//设置日志Level
logging.setLevel(Level.BODY);
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
//添加拦截器到OkHttp,这是最关键的
httpClient.addInterceptor(logging);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
以上就是具体的拦截功能,除此之外,我们了解一下上文提到的日志拦截器的Level
HttpLoggingInterceptor为我们提供了四种不同的Level,它们分别是NONE, BASIC, HEADERS, BODY
分别表示
- NONE:没有记录
- BASIC:日志请求类型,URL,请求体的大小,响应状态和响应体的大小
- HEADERS:日志请求和响应头,请求类型,URL,响应状态
- BODY:日志请求和响应标头和正文
根据需求选择什么Logging Level,主要在于你的~~~
通常我们显示日志主要是在开发环境,而在生产环境,我们则希望日志能够被关闭,那么我们可以设置如下
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
if (BuildConfig.DEBUG) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(Level.BODY);
httpClient.addInterceptor(logging);
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
这样,我们就会在Debug模式下进行日志显示,这种方式也是被强烈推荐的。
同时你也可以针对开发环境和生产环境设置不同的Logging Level。
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
if (BuildConfig.DEBUG) {
// development build
logging.setLevel(Level.BODY);
} else {
// production build
logging.setLevel(Level.BASIC);
}
httpClient.addInterceptor(logging);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(API_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build())
.build();
以上就是所有关于Retrofi2的Logging内容了,你可以根据你实际的项目进行合理的设置。
写在最后
希望这篇文章能够给你一点小小的提示,喜欢的话可以给我点个赞,这是对我最大的鼓励,最后提供一个Retrofit写的比较好的链接
Retrofit — Getting Started and Creating an Android Client