文章目录

  • logcat工具介绍
  • 安卓日志级别
  • 测试环境
  • 遇到的问题
  • 获取该app的进程号
  • 使用logcat抓取该app的日志
  • 根据日志分析原因
  • 参考资料


logcat工具介绍

logcat是android中的一个命令行工具,可以用于得到程序的log信息。

安卓日志级别

V—Verbose(啰嗦,最低级别,开发调试中的一些详细信息,仅在开发中使用,不可在发布产品中输出,不是很常见,包含诸如方法名,变量值之类的信息)
D—Debug(调试,用于调试的信息,可以在发布产品中关闭,比较常见,开发中经常选择输出此种级别的日志,有时在beta版应用中出现)
I—Info(信息,该等级日志显示运行状态信息,可在产品出现问题时提供帮助,从该级别开始的日志通常包含完整意义的英语语句和调试信息,是最常见的日志级别)
W—Warning(警告,运行出现异常即将发生错误或表明已发生非致命性错误,该级别日志通常显示出执行过程中的意外情况,例如将try-catch语句块中的异常打印堆栈轨迹之后可输出此种级别日志)
E—Error(错误,已经出现可影响运行的错误,比如应用crash时输出的日志)
F—Fatal(严重错误,比error级别更高,目前我只在android系统内核发出的日志中看到此种级别。在Android6.0以前表明开发者认为绝对不应该出现的错误,在此以后一般开发场景下绝不应该输出此种级别的日志)
S—Silent(寂静,最高级别,没有一条日志会属于这个级别,仅仅作为关闭logcat输出的过滤器参数)

测试环境

android f 日志级别 安卓日志级别_logcat

遇到的问题

点击获取验证码,提示验证码错误

android f 日志级别 安卓日志级别_Android_02

获取该app的进程号

使用命令查看该app对手机内存的占用情况,执行结果里面会出现该app的进程编号(pid)

adb shell dumpsys meminfo com.lqm.home

该app的进程号为3546

android f 日志级别 安卓日志级别_logcat_03

使用logcat抓取该app的日志

命令如下:

adb logcat -v time | find "3546"

发现日志存在中文乱码问题,乱码原因是:Android中使用的是UTF-8字符,而CMD默认字符集是ANSI,中文环境下即为GBK

android f 日志级别 安卓日志级别_logcat_04


乱码问题解决办法如下:

chcp  65001

将活动代码页修改为65001

android f 日志级别 安卓日志级别_日志定位_05


使用locatcat重新抓取日志

android f 日志级别 安卓日志级别_日志定位_06

根据日志分析原因

从告警日志中可以分析出剩余短信条数已经不足。需要充值,才能正常调用厂商的短信接口。

android f 日志级别 安卓日志级别_日志定位_07

参考资料

[01] android logcat抓取app日志的方法

[02] Android logcat解析与问题分析

[03] 浅谈Android的日志机制:Log和logcat

[04] CMD命令进行adb logcat时显示一堆的乱码的解决办法