文章目录
- Android日志系统
- 日志接口介绍
- 日志格式
- 日志文件位置
- 日志命令行工具
- 一些有用的过滤模式
- 日志文件分析
Android日志系统
Android使用一个集中式系统来记录所有的日志,应用开发者也可以编写自定义日志,也可以定义日志过滤器。日志分析是开发的核心阶段之一,开发人员经常会遇到这样那样的问题需要借助日志分析来解决。
Bug日志有助于在开发阶段识别Android应用中的Bug。一旦应用发布到市场上,开发者(或者支持工程师)也要通过分析bug日志来解决问题。
在Android生态系统中有不同类型的日志: 主日志、Android系统日志、事件日志和Radio日志。主日志用于应用程序,events用于系统事件信息,radio用于电话相关信息,system用于低级系统消息和调试。
Android日志系统包括一个内核驱动程序和用于存储Android日志消息的内核缓冲区,用于创建日志条目和访问日志消息的C、c++和Java类,一个用于查看日志消息的独立程序(logcat),以及查看和过滤来自主机的日志消息的能力(通过Android Studio或ddms)。
Linux内核中有四个不同的日志缓冲区,它们为系统的不同部分提供日志记录。所有的的缓冲区都在设备节点“在/dev/log”下,有“/dev/log/main”, “/dev/log/radio”,“/dev/log/event”,“/dev/log/system”,分别对应主日志、事件日志、Radio日志和系统日志。
日志中的每条消息都包含一个标记,表明消息来自系统或应用程序的哪个部分:一个时间戳(日志发生时间),日志级别(日志优先级)和日志内容(错误、异常或信息的详细描述等)。
日志接口介绍
主日志使用android.util.Log打印,主要被应用使用。
系统日志使用android.util.Slog打印。许多android框架层的模块使用该工具打印日志,这样可以与应用日志区分开,避免其他日志干扰。
事件日志使用android.util.EventLog打印,输出二进制格式的日志。日志入口包含二进制tag code,后面跟二进制参数。二进制tag code存储在 /system/etc/event-log-tags。
日志格式
时间戳 进程号 线程号 优先级 标签 日志内容
V - 详细(最低优先级)*
D - 调试*
I - 信息*
W - 警告*
E - 错误*
F - 致命的*
S - 沉默(最高优先级,不打印任何东西)
日志文件位置
Android的日志(包括崩溃的日志)存储在几个目录中,它不是标准化的(可能被特定手机厂家修改定制)。这里放了一些常见的。
/data/anr: Dalvik在anr上写堆栈跟踪,即“应用程序不响应”或“强制关闭”。
/data/dontpanic: 包含一些崩溃日志,包括跟踪。
/data/kernelpanics: —存储内核恐慌相关的日志。
/data/tombstones: 可以保存多个tombstone_nn文件(nn是一个从0到10的数字,在10之后再次重复它)。
日志命令行工具
从设备或模拟器捕获Android日志可通过一些命令行工具来进行。在实践中,还有一些日志捕获应用程序或工具用于捕获用户设备上的日志,并将其呈现给开发人员进行分析。
adb logcat
: 显示当前android系统的所有类型日志
adb logcat -v threadtime
: 显示当前android系统的所有类型日志, 包含日期和时间
adb logcat -v threadtime > logfile.txt
: 将日志存储(覆盖重定向)在logfile.txt文件中
一些有用的过滤模式
您可以在adb命令中使用过滤器来过滤日志。
adb logcat *:E
: 获取所有错误和致命文件
adb logcat | grep -i "error"
: 过滤出日志中所有携带error的行
adb logcat MyTag:* *:S
: 过滤所有标签为“MyTag”的行
adb logcat -b events gsm_service_state_change *:S
: 获取所有GSM状态变化
adb logcat -b radio
: 获取所有radio事件
日志文件分析
在开发过程中我们并不总是能够实时查看日志,比如测试报告bug、者线上发生问题、或自动化测试时,会附加一份存储到文件中的android日志。
虽然在日志格式上命令行输出的日志和文件中的日志没有什么不同,但是在分析手段上,还是有明显差异。分析日志文件需要借助文本工具。
这些文本工具需要具备执行普通和正则表达式过滤的能力。
满足条件的文本工具有很多,比如你的IDE、notepad++、UltroEdit、Tilipa日志工具、sublime等,你可以根据自己的喜好来选择。
不过如果你需要打开超大日志文件(100MB以上),或者在非windows操作系统上打开,只推荐使用Tilipa日志工具。