概述
平常用logcat看日志或copy日志,实际是在logcat的一个
可视化
窗口上进行简单的read和copy,这个窗口是由logcat工具支撑的,并不是logcat的全部。
Android 日志记录系统是系统进程 logd 维护的一组结构化环形缓冲区。这组可用的缓冲区是固定的,并由系统定义。最相关的缓冲区为:main(用于存储大多数应用日志)、system(用于存储源自 Android 操作系统的消息)和 crash(用于存储崩溃日志)。每个日志条目都包含一个优先级、一个标识日志来源的标记以及实际的日志消息。优先级从最低到最高为:
-
V
:Verbose (最低优先级) -
D
:Debug -
I
:Info -
W
:Warn -
E
:Error -
F
:Fatal -
S
:Silent (静默,最高优先级,绝不会输出任何内容)
日志记录系统的主接口是共享库
liblog
及其头文件
<android/log.h>
。所有语言特定的日志记录工具最终都会调用函数
__android_log_write
。默认情况下,它会调用函数
__android_log_logd_logger
,该函数使用套接字将日志条目发送到
logd
。从 API 级别 30 开始,可通过调用
__android_set_log_writer
更改日志记录函数。
运行
adb logcat
显示的日志要经过四个级别的过滤:
-
编译时过滤:根据编译设置,某些日志可能会从二进制文件中完全移除。例如,可以将 ProGuard 配置为从 Java 代码中移除对
Log.d
的调用。 -
系统属性过滤:
liblog
会查询一组系统属性以确定要发送到 logd 的最低严重级别。如果日志具有 MyApp 标记,系统会检查以下属性,并且日志应包含最低严重级别的第一个字母(V、D、I、W、E 或 S 以停用所有日志):
log.tag.MyApp
persist.log.tag.MyApp`
`
版权声明:本文为a5nan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。