Android 日志系统分析(三):logcat
logcat 作为读取日志的工具,相当于client 的角色;在前两篇文章中,关于 logcat 如何与其他部分沟通获取日志信息的流程已经介绍的比较清晰,本文不在赘述,转而归纳一下 logcat 的一些常用指令,并对其中一些做详细分析
Android 日志系统为日志消息保留了多个环形缓冲区,但并非多有的日志消息都会发送到默认的环形缓冲区。这里可以采用 logcat -b 命令查看设备的其他缓冲区:
如果需要查看内核空间日志信息,可采用如下几种方式查看:
1、读取 /proc/kmsg ,命令如下
读取/proc/kmsg属于消费型读取,读取之后再次读取不会显示已经读取过的日志信息
2、读取 /dev/kmsg ,命令如下
读取/dev/kmsg会显示缓存区里面的所有日志信息。新写入的日志信息会不断累加到日志缓冲器中
3、使用 dmesg 命令读取
dmesg命令读取一次只显示一部分日志,非阻塞执行
使用 -v 命令来修改 log 的输出格式,以显示特定的元数据字段:
优先级:
logcat -f 命令可以将日志消息输出到指定的文件中。这里我们需要确定的一件事是 logcat 作为客户端的角色,会将通过 liblog 获得的日志信息进行格式解析、格式化处理,而 liblog 库本身并不存在保存、解析的功能。这里来对 -f 指令做一下解析:
在 _logcat() 函数中解析 -f 指令,设置日志输出文件。例如 logcat -f sdcard/log.txt ,则 context->outputFileName 赋值为 sdcard/log.txt ;
以 printBinary() 函数为例:
logcat.cpp # printBinary() :
[ 1 ] Android物语:logcat
[ 2 ] android调试——logcat详解
[ 3 ] 玩转Android10源码开发定制(12)内核篇之logcat输出内核日志
2023-05-10 广告