Android log 系统
admin
2024-01-18 16:32:03

一、android log 架构

在Android生态系统中有不同类型的日志: 主日志、Android系统日志、事件日志和Radio日志。主日志用于应用程序,events用于系统事件信息,radio用于电话相关信息,android 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。

/data/anr: Dalvik在anr上写堆栈跟踪,即“应用程序不响应”或“强制关闭”。

/data/dontpanic: 包含一些崩溃日志,包括跟踪。

/data/kernelpanics: —存储内核恐慌相关的日志。

/data/tombstones: 可以保存多个tombstone_nn文件(nn是一个从0到10的数字,在10之后再次重复它)。

1.1 Logd守护进程

logd守护进程,开机时由 init 进程拉起;logd 内部维护了一个 RAM buffer 用作日志的缓存。各个进程的日志都会写入此缓存中。如果日志大小超过缓存限定,就会删除最老的日志。

注意 logd 对外维护了 3 个 socket api :

  • dev/socket/logd : 传输控制指令

  • dev/socket/logw : 写日志

  • dev/socket/logr : 读日志

1.2 写日志流程

1.3 读日志

1.4 日志解析

不同于写日志的流程,日志在保存时是有特定的格式去存储。在读取时 logcat 作为读取的客户端是需要先对日志进行格式解析,并拼接为命令行可见的字符串,因此有了 processBuffer 的过程。同时 logcat 打印日志超过了文件大小限制,就需要调用 rotateLogs 函数去建立新的文件。

1.5 日志打印消耗资源

1:进程通信: 日志信息通过 socket 发送给 logd。

2:cpu 消耗: logd 中 ring buffer 会经常进行 pruneLogs 操作,删减日志,耗费CPU资源。

3:内存占用:logd 中维持对应的 buffer,RAM 的消耗。

4:io 读写消耗:在应用程序中 ,创建后台线程保存日志信息,这回导致应用或者整机卡顿。

二 、logd

2.1 知识点:

logd 是日志系统的核心进程,由 init 启动,是属于守护进程常驻后台 ② logd 维护各个日志节点缓存队列,提供 socket 接口进行读、写、控制功能 ③ logd 进程启动后,分别启动 LogReader、LogListener、CommandListener 三个线程,监听并处理来自三个 socket 的消息。在收到消息后,会通过 LogBuffer 类保存日志到对应的 RAM buffer 中 ④ LogAudit 模块用于接收 Kernel selinux 信息,即可以在用户空间打印 selinux 日志信息 ⑤ LogKlog 用于接收 kernel 日志信息,通过设置 property ,可以通过 logcat 命令读取内核日志 ⑥ LogStatistics 是日志统计模块,默认开启统计数据较少,仅能以 pid/uid 纬度统计打印日志的数量。如果设置了 logd.statistic = true 。会打印更多纬度的统计信息,包括哪些 pid/uid/tid/TAG 日志量比较大,可用于日志裁剪相关

2.2 logd 启动流程

相关内容

热门资讯

俄媒:俄罗斯来华游客数量稳步增... 参考消息网11月19日报道 据俄罗斯自由媒体网11月17日报道,自9月15日中国对俄罗斯游客试行免签...
“根本不愁卖,来晚了就没了”!... “在网上看到了,特地来尝鲜。”近日,“00后”陈女士打卡了一款名为“奶皮子糖葫芦”的零食。这款零食由...
重磅发布!2026全球高端餐厅... 来源:携程美食林 当用户真实评价 与顶尖美食家的专业洞察交汇 呈现给所有人的不仅是榜单的更迭 更是携...
治愈系美食爱情微短剧《宴遇簪花... 作为泉州成功入选“世界美食之都”后的首部治愈系美食爱情微短剧,《宴遇簪花缘》今日正式公布首轮剧照。首...
【京·花果蜜】怀柔栗子天团,申... 谁能拒绝这一美味?栗子酥、冰栗、栗子蛋糕…个个都是实力派!这口百年老树的甜,你最爱哪一款?