Logcat用法详解

  • Post author:
  • Post category:其他




概述

平常用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

显示的日志要经过四个级别的过滤:

  1. 编译时过滤:根据编译设置,某些日志可能会从二进制文件中完全移除。例如,可以将 ProGuard 配置为从 Java 代码中移除对

    Log.d

    的调用。
  2. 系统属性过滤:

    liblog

    会查询一组系统属性以确定要发送到 logd 的最低严重级别。如果日志具有 MyApp 标记,系统会检查以下属性,并且日志应包含最低严重级别的第一个字母(V、D、I、W、E 或 S 以停用所有日志):


    log.tag.MyApp
persist.log.tag.MyApp`
`



版权声明:本文为a5nan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。