日志拦截器
一般网络请求都会选择在LogCat打印网络日志信息, 但LogCat日志可读性差, 且不完整
Net以下两种方案, 各有优劣
- 使用AndroidStudio的Profiler监听网络 (推荐)
- 可以查看项目所有OkHttp层的网络请求日志
- 但是查看可能不太方便, 因为网络请求是动态的曲线图
- 启动应用立刻触发的请求的可能无法捕捉到
- 安装Okhttp Profiler插件, 且添加Net的
LogRecordInterceptor
拦截器- 列表显示请求, 使用自定义的日志拦截器才支持显示日志
- 实际上是插件捕获logCat生成的日志, 线上环境需要关闭
- 插件有点bug, 比如延迟第一次需要反复打开下, 参数请求头重复显示
添加日志拦截器¶
NetConfig.init("http://github.com/") {
addInterceptor(LogRecordInterceptor(BuildConfig.DEBUG))
}
构造参数 | 描述 |
---|---|
enabled | 是否启用日志 |
requestByteCount | 请求日志信息最大字节数, 默认1MB |
responseByteCount | 响应日志信息最大字节数, 默认4MB |
这样会可以在LogCat看到日志输出, 但是我们要使用插件预览就需要第 2 步
安装插件¶
1. 安装插件¶
在插件市场搜索: "Okhttp Profiler
"
2. 打开窗口¶
安装以后在AndroidStudio右下角打开窗口
请在每次使用前都先打开插件窗口, 如果有延迟或者不显示就反复打开下窗口
使用效果
标题 | 描述 |
---|---|
Device | 选择调试设备 |
Process | 选择展示记录的进程 |
抓取 | 一般情况不需要使用, 假设没有及时更新请点击图标 |
清空 | 清空记录 |
单例禁用日志¶
scopeNetLife {
tvFragment.text = Get<String>("api") {
setLogRecord(false) // 为当前请求禁用日志记录
}.await()
}
自定义日志(解密)¶
通过继承LogRecordInterceptor
可以覆写函数自定义自己的日志输出逻辑
- 如果你的请求体是被加密的内容, 你可以通过覆写
requestString
函数返回解密后的请求信息 - 如果你的响应体是被加密的内容, 你可以通过覆写
responseString
函数返回解密后的响应信息
然后初始化时添加自己实现拦截器即可
NetConfig.init("http://github.com/") {
addInterceptor(MyLogRecordInterceptor(BuildConfig.DEBUG))
}
LogCat过滤¶
实际上Net的网络日志还是会被打印到LogCat, 然后通过插件捕捉显示.
如果不想LogCat的冗余日志影响查看其它日志, 可以通过AndroidStudio的功能折叠隐藏, 添加一个OKPREL_
过滤字段即可
其他网络框架¶
可能你项目中还残留其他网络框架, 也可以使用Net的日志记录器LogRecorder
来为其他框架打印日志信息
函数 | 描述 |
---|---|
generateId | 产生一个唯一标识符, 用于判断为同一网络请求 |
recordRequest | 记录请求信息 |
recordResponse | 记录响应信息 |
recordException | 记录请求异常信息 |