Logcat是Android 系统提供的实时查询系统日志的命令工具,帮助开发者在开发调试阶段定位问题,优化自身功能。然而对logcat日志使用不当也会导致一些问题,如个人信息泄漏/功耗等,而开发者对这些问题则关注的少,为此vivo针对logcat做了部分的定制,以防止出现类似的问题。
1. 打印行数限制
vivo限制了logcat输出日志的频率,限制单个进程每秒只能打印 250行,一秒内超出的日志将会直接丢弃(每一秒的日志都是重新计数),并且打印以下的日志:
该日志是对应的进程中打印的,drop 关键字后面表示了当前丢失了多少行的日志,行数限制不区分日志等级。
应用开发者需要控制自身的日志打印量,不能无休止的刷日志。
2. 敏感数据过滤
任何的Android手机只要打开了开发者选项,都可以通过logcat打印系统日志,若日志中有个人数据打印则非常危险,为此vivo在logcat的输出增加了敏感信息脱敏功能,输出的日志中有敏感的数据(如:手机号,设备ID,经纬度,ip地址,URL等),都会全部转换为星号。
未脱敏日志
脱敏后日志
备注:在新的机型上,系统做了区分处理,debug版本应用打印的内容不会脱敏,release版本的会脱敏,满足开发者的调试需要。
3. Logcat调用限制
APP若在运行时需要读取系统日志定位自身发生的异常,调用 logcat 命令时必须增加 -d 参数,即调用logcat不能阻塞进程一直等待;若应用未增加此参数,则系统会特殊处理,实现同等效果(增加参数-d)。如下格式:logcat -d 。
增加 -d 参数后,logcat 仅仅会读取当前系统缓存的日志,然后直接把网址生成app退出,不会一直阻塞住。未增加 -d 参数则会持续输出系统日志,对系统负载影响大,特别是系统日志量多的时候,对功耗的影响会非常的大。
编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/11675/
部分内容来自网络投稿,如有侵权联系立删