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日志工具。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值