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

原文位置:http://blog.csdn.net/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设计当中的设计模式的理念,从日志的参数判断,日志的异常处理,日志设备的开启,日志的读取,日志的格式化,日志的过滤,各个文件各司其职,各显神通,大体上符合了单一责任原则,很美妙的代码,不过某种意义上来讲,并不是完美的代码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值