第四学:logcat---android中LOG日志的读取过程

本文介绍Android系统的Logcat工作原理,包括日志的数据结构、读取流程等关键信息。重点讲解了日志实体与设备结构体的设计,以及日志读取过程中涉及的多个步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文位置:http://blog.youkuaiyun.com/luoshengyang/article/details/6606957

读取的过程就是通过logcat命令读取LOG日志的过程,这一篇完毕日志部分就算完毕了

一、数据结构:
主要是两个链表,一个是日志链表,一个是日志设备链表,实体如下:
1、queued_entry_t:日志实体结构体,包含日志实体本身,也就是第二学当中的日志结构体,包括pid、tid、标签、内容、长度、时间
2、log_device_t:日志设备结构体,包含日志设备内容以及其中保存的日志实体结构体表
3、AndroidLogEntry_t :日志输出的格式,包含时间、日志类型、日志标签、日志内容和长度、日志进程信息

3、日志实体链表中的排序是按时间排序的

二、读取流程:

logcat程序文件位置:system/core/logcat/logcat.cpp
1、读取logcat调用时的参数设置(此处为默认设置)
2、创建读取日志设备的对象
3、判断日志的输出位置,输出到屏幕还是文件
4、打开日志设备
5、读取日志设备文件
6、遍历日志设备将当前读取指针调整到每一个日志设备的可读位置
7、遍历日志设备,将日志设备中可读的日志队列放入到读取对象当中
8、日志队列取出完毕后,遍历取出的日志队列并按照时间输出
9、再次判断输出参数中是否包含日志输出条数的设置
10、判断日志是否为二进制输出格式
11、将日志格式化为AndroidLogEntry_t格式
12、然后根据日志的priority进行过滤,判断日志是否需要输出(为什么不在取日志的时候直接过滤)
13、输出日志
14、如果日志是输出到文件中,则关闭文件

总结:

可以看到一些android设计当中的设计模式的理念,从日志的参数判断,日志的异常处理,日志设备的开启,日志的读取,日志的格式化,日志的过滤,各个文件各司其职,各显神通,大体上符合了单一责任原则,很美妙的代码,不过某种意义上来讲,并不是完美的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值