
- 1.debug 日志比较简单,如图一就是将 android 自身提供的 Log 类进行一些封装,添加一些自己需要的特性和扩展,这里就不多赘述了具体实现可以看项目中的代码。。
2、aop日志

- 1.很多人在写一些重复性的日志的时候就会想到 aop,这种技术可以在注解的方法前后注入需要的模板代码。我在上一篇文章中讲到了这个技术,有兴趣的同学可以去看看,这里我就简单说一下。
- 2.首先我们得先定义一个注解类,其可以用于注解类或者方法。注解类中可以被填入一些信息,比如是否需要打印方法的初入参等等。
- 3.在注解类使用了之后,我们需要用到 gradle transform。这种技术可以让我们在编译期间扫描所有的类,从而找被注解类所注解的方法和类。
- 4.最后我们可以用上javassist来给找到的方法前后注入我们需要的代码。注意这里的日志可以是本地的 debug日志,也可以是本地文件日志,还可以是埋点日志。可以说 aop 日志只是一种对另外几种日志的自动化封装。
3、网络请求日志

- 1.我们在调试网络请求的时候,除了抓包还会打印出网络请求。这个时候就如果有一种统一的形式来打印日志的话就会方便许多。
- 2.现在绝大部分的厂商使用的网络请求库都是 okhttp ,所以我就直接在其上面进行日志的定制就行了。因为项目的 http 模块还没有进行开发,所以还没有实现代码,这里就讲一讲大致方案。之后在开发 http 模块的时候会顺便讲解具体实现。
- 3.在讲解方案之前我们需要知道,okhttp 的工作方式。如图3中所示,在一个 okhttp 请求的过程中会经过一个个拦截器,从本地向网络请求的时候会经过一次,网络请求回来的时候又会经过一次。
- 4.所以我们就可以添加一个日志拦截器在两次经过拦截器的时候打印请求的 head 和按需打印 请求的 body。注意,这里打印可以是向 debug 日志、本地文件日志、埋点日志这三个地方打印。分别用于本地 debug、线上 debug和网络性能监控。
4、本地文件日志

- 1.当我们在线上遇见 bug 的时候咋办呢?有些 crash 的日志可以通过 bugly 这种平台来进行回捞。但是有些奇葩的 bug 只在某些机型甚至某些用户的手机上发生。这个时候本地文件日志就派上用场了。
- 2.我们可以在开发的时候在一些关键的功能上手动添加上本地文件日志。当某个用户报了 bug 之后我们就可以让其通过一个入口将文件日志发送到后台,最后由开发人员进行日志分析找到问题。
- 3.接下来我就来通过代码结合上面的图4来讲解本地文件日志的实现方式。
- 4.我们先来看看


4176

被折叠的 条评论
为什么被折叠?



