概述¶
通过将 Okhttp3Interceptor 添加为 Okhttp 拦截器,便可轻松打印请求日志:
// Add Interceptor
val logcat = logFactory("global")
val okhttp = OkHttpClient
.Builder()
.addInterceptor(Okhttp3Interceptor(logcat))
.build()
// Make a request
val request: Request = Request.Builder()
.url("http://127.0.0.1:7777")
.build()
okhttp.newCall(request).execute()
以下是打印的日志示例:
添加依赖¶
implementation 'io.github.sakurajimamaii:log-okhttp:$version'
implementation("io.github.sakurajimamaii:log-okhttp:$version")
过滤器¶
通过 Okhttp3Interceptor 提供的 filter 你可以对请求进行过滤,例如请求链接中必须包含 getPhoto :
okhttp3Interceptor.apply {
filter = {
it.url.host.contains("getPhoto")
}
}
内容级别¶
通过 Okhttp3Interceptor 提供的 contentLevel 你可以设置日志的打印内容,例如可以只打印日志的请求信息:
okhttp3Interceptor.apply {
contentLevel = ContentLevel.INFO
}
内容级别默认值
contentLevel 的默认值为 ContentLevel.ALL
请求日志级别¶
通过 Okhttp3Interceptor 提供的 requestLevel 你可以设置请求内容的日志级别:
okhttp3Interceptor.apply {
requestLevel = { request ->
if(request.url.host.contains("127.0.0.1")){
LogLevel.DEBUG
} else {
LogLevel.INFO
}
}
}
请求日志级别默认值
requestLevel 的默认值为 LogLevel.DEBUG
回复日志级别¶
通过 Okhttp3Interceptor 提供的 responseLevel 你可以设置回复内容的日志级别:
okhttp3Interceptor.apply {
responseLevel = { response ->
if (200 == response.code) {
LogLevel.DEBUG
} else {
LogLevel.ERROR
}
}
}
请求头隐藏¶
通过 sanitizedHeaders() 可以将指定的请求头进行替换为隐藏字段:
Okhttp3Interceptor(logcat)
.sanitizedHeaders("Authorization","***")
.sanitizedHeaders("User-Agent","xxx")
则上述的请求头内容会被替换成指定内容:
回复日志级别默认值
responseLevel 的默认值为 LogLevel.DEBUG