0x00 解决问题
- 新人刚到项目组,往往搞不清每个页面对应的Activity名称,导致完成需要一些时间浪费在找页面上
- 网络请求查看比较麻烦,需要代理,转为格式化json
- 系统Log比较挫
项目地址 https://github.com/xsfelvis/ZeusLog
0x01 ZeusLog
主要分为两大块,移动端Log和控制台Log,先上图
移动端
Image may be NSFW.
Clik here to view.
主要支持
- 显示当前Actvity的名称
- 显示所需打印网络请求的内容,内容部分透传点击事件,不影响app使用
- 右边有一个长条控制区域,可以滑动联动内容区域,便于阅读长的网络请求
具体如下
Image may be NSFW.
Clik here to view.
【黄色区域】 当前Actvity名称
【红色区域】 log日志开启或者关闭,关闭后右边控制区域也随之消失,只有当前的Activity名称,如下
Image may be NSFW.
Clik here to view.
【橙色区域】 网络请求格式化显示区域,该部分透传所有点击事件,从而使整个App使用不受影响
【绿色区域】 自定义sideBar,滑动该区域控制橙色区域长文本滚动阅读
技术点:
没有采用window去实现,原因很简单,兼容性不好,现在各大厂商对自己的windows权限管理都很紧,而且正好尝试一下自定义view+事件分发,有了想法,一时技痒,就撸一个呗,当然你也可以有其他更好的思路,也可以跟我交流
控制台
控制台有一些比较全的Log库,如orhanobut/logger、JakeWharton/timber等,该部分主要是借鉴了前人的代码,自己做了一些定制,主要是不想增加无需求的功能,如xml格式化等,最终 支持基本log+多参数+json格式。
- 支持显示行号
- 支持显示Log所在函数名称
- 支持无Tag快捷打印
- 支持在Android Studio开发IDE中,点击函数名称,跳转至Log所在位置
- 支持JSON字符串解析打印
- 支持无限长字符串打印,无Logcat4000字符限制
- 支持变长参数,任意个数打印参数
- 支持设置全局Tag
基本tag
Image may be NSFW.
Clik here to view.
无tag显示当前类名
Image may be NSFW.
Clik here to view.
格式化输出json
Image may be NSFW.
Clik here to view.
多参数log
Image may be NSFW.
Clik here to view.
0x02 How to Use
引入这个库 或者aar
移动端Log使用很简单,需要在你想打印的地方,调用如下API即可
ZeusMobileView.startZeus(MainActivity.this).setJsonStr(JSON_LONG);
控制台Log 需要先初始化安全等级
ZeusLog.init(BuildConfig.DEBUG);
表示仅仅在debug包下打印日志,如果不初始化也可使用,但是需要注意release包保护
然后如同使用系统API一样使用即可
不带tag
- ZeusLog.v(LOG_MSG);
- ZeusLog.d(LOG_MSG);
- ZeusLog.i(LOG_MSG);
- ZeusLog.w(LOG_MSG);
- ZeusLog.e(LOG_MSG);
- ZeusLog.a(LOG_MSG);
带tag
- ZeusLog.v(TAG, LOG_MSG);
- ZeusLog.d(TAG, LOG_MSG);
- ZeusLog.i(TAG, LOG_MSG);
- ZeusLog.w(TAG, LOG_MSG);
- ZeusLog.e(TAG, LOG_MSG);
- ZeusLog.a(TAG, LOG_MSG);
json格式化
- ZeusLog.printJsonStr(JSON);
多个参数
- ZeusLog.v(TAG, LOG_MSG, “params1”, “params2”, this);
- ZeusLog.d(TAG, LOG_MSG, “params1”, “params2”, this);
- ZeusLog.i(TAG, LOG_MSG, “params1”, “params2”, this);
- ZeusLog.w(TAG, LOG_MSG, “params1”, “params2”, this);
- ZeusLog.e(TAG, LOG_MSG, “params1”, “params2”, this);
- ZeusLog.a(TAG, LOG_MSG, “params1”, “params2”, this);
最后感谢你宝贵的时间阅读,如果你喜欢的话可以点赞收藏,也可以关注我的账号,大家一起交流技术。