Android11日志系统

概述

了解对日志的认知

什么是日志?
日志有什么作用?

日志记录系统概览

Android 日志记录系统是系统进程 logd 维护的一组结构化环形缓冲区。这组可用的缓冲区是固定的,并由系统定义。最相关的缓冲区为:main(用于存储大多数应用日志)、system(用于存储源自 Android 操作系统的消息)和 crash(用于存储崩溃日志)。每个日志条目都包含一个优先级(VERBOSE、DEBUG、INFO、WARNING、ERROR 或 FATAL)、一个标识日志来源的标记以及实际的日志消息。

Logcat

常用命令

以下是一个过滤器表达式的示例,该表达式会抑制除标记为“ActivityManager”、优先级不低于“信息”的日志消息,以及标记为“MyApp”、优先级不低于“调试”的日志消息以外的所有其他日志消息:

adb logcat ActivityManager:I MyApp:D *:S 

上述表达式中最后一个元素 *:S 将所有标记的优先级设为“静默”,从而确保系统仅显示标记为“ActivityManager”和“MyApp”的日志消息。使用 *:S 是确保日志输出受限于您已明确指定的过滤器的绝佳方式,它可以让过滤器充当日志输出的“许可名单”。
以下过滤器表达式显示了优先级不低于“警告”的所有标记的所有日志消息:

adb logcat *:W

查看已经过解译的二进制系统事件缓冲区消息。

adb logcat –b events

官方文档介绍

Logcat 命令行工具 | Android 开发者 | Android Developers (google.cn)
使用 Logcat 写入和查看日志 | Android 开发者 | Android Developers (google.cn)

框架介绍

框架图

在这里插入图片描述

模块介绍

Framework:android应用框架

libandroid_runtime:android 运行时(ART)实例库

native:android本地应用

Logcat:是一个命令行工具,用于转储系统消息日志,包括设备抛出错误时的堆栈轨迹,以及从您的应用使用 Log 类写入的消息。

liblog:代表了 NDK(原生)应用程序和库的易失性 Android 日志记录系统的接口。用于写入或读取日志的接口。日志缓冲区分为主日志、系统子日志、无线电子日志和事件子日志。

logd:作为日志系统的服务端,通过socket与liblog传递日志数据和控制命令

liblog

应用层写入日志流程

在这里插入图片描述

Native写入日志流程

在这里插入图片描述

Logcat读取日志流程

在这里插入图片描述

Logcatd初始化流程

在这里插入图片描述

logd

初始化流程

在这里插入图片描述
这里有两个进程初始化logd和logd-reint

都是通过system/bin/logd的二进制bin文件启动,只是参数的不同
在这里插入图片描述

内部组件介绍

在这里插入图片描述
LogReader 监听 /dev/socket/logdr。 当客户端连接时,LogBuffer 中的日志条目会写入客户端。

LogListener 在 /dev/socket/logdw 上侦听客户端启动的日志消息。 新的日志条目被添加到 LogBuffer 并通知 LogReader 将更新发送到连接的客户端。

CommandListener 在 /dev/socket/logd 上侦听传入的 logd 管理命令。

LogAudit 在 NETLINK_AUDIT 套接字上侦听 selinux 启动的日志消息。 新的日志条目被添加到 LogBuffer 并通知 LogReader 将更新发送到连接的客户端。

LogKlog在/proc/kmsg上监听kernel上的日志消息,新的日志条目被添加到 LogBuffer 并通知 LogReader 将更新发送到连接的客户端。

内部组件类图

在这里插入图片描述

Loglistener写入流程

在这里插入图片描述

Logreader读取流程

在这里插入图片描述

结语

总结

Android 日志系统整体通过liblog作为接口提供给客户端使用,logd作为服务端收集系统相关日志,并提供读取日志功能,logcat作为日志工具可以读写并转发存储指定文件
kmsg日志的存储与读取 - 知乎 (zhihu.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月夜持剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值