Android的日志系统分层与logcat使用

Android的日志系统分为四层,分别是:

  1. 核心层(kernel):负责底层的输入输出、内存、磁盘、进程等操作。本层日志主要是通过printk等函数输出,并存储在ring buffer中,只有在安卓手机发生严重错误时才需要查看。

  2. 系统层(system):包括system_server、Zygote和ActivityManager等系统服务,存放的是系统服务的日志信息。该层日志主要是通过Android中的Log类以及底层的write函数实现,用来记录系统层中关键服务的运行状况,存在于原生分区的"/system/etc"目录下。

  3. 应用层(应用程序)(app):存放的是应用程序的日志信息,例如:自定义日志、开发错误日志等。该层日志主要是通过Android中的Log类进行记录,存在于/data/logger目录当中。

  4. 第三方库层(第三方库)(vendor):存放的是第三方库中的日志信息。该层日志主要是通过及其选择的日志框架实现得,存在于/vendor/etc目录当中。

Logcat是Android中的一个命令行工具,可以用于查看日志。我们可以使用Logcat对上面四层日志中的信息进行筛选、过滤和查看。

下面简单介绍一下如何使用logcat查看日志信息。

注意:在电脑端,需要提前安装ADB(Android Debug Bridge)工具。

  1. 打开终端(Linux或macOS),或命令行窗口(Windows)
  2. 连接手机到电脑,并输入以下命令:

adb logcat

该命令会等待设备连接,并输出所有的日志信息。

  1. 多数情况下我们可能只对错误日志感兴趣,可以加上-f选项,指定输出到一个文件中:

adb logcat -f /sdcard/logcat.txt

该命令将日志输出到手机存储卡根目录下的logcat.txt文件中。

如果想关闭logcat,可以使用CTRL+C或执行以下命令:

adb logcat -c

  1. 过滤日志,例如只想查看某个进程或某个标签的日志:

adb logcat -s TAG //过滤某个标签的日志
adb logcat -v time //列出日志时带上时间戳
adb logcat -d //输出完整日志后退出

示例一:

有一款应用程序崩溃了,用户反馈无法正常使用,请你使用logcat查看日志信息,找出错误原因。

一般情况下,应用崩溃时会有"Fatal Exception"这样的标志,我们可以通过以下命令查看:

adb logcat *:E // 只查看Error级别及以上的日志

如果还不行就可以加上-v(输出格式)选项,例如:

adb logcat -v time app_name:E *:E

示例二:

某个活动(Activity)无响应,我们想知道具体是哪一步出了问题,为了更好地排查,需要打印相关日志信息。

在程序代码中添加如下代码来打印日志信息:

Log.d("TAG", "onCreate方法执行了");

然后我们可以通过如下命令查看:

adb logcat -s TAG

我们可以看到过滤出来日志信息中包含了我们打印的信息,帮助我们快速定位问题所在。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android的日志系统分层与logcat使用 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • C语言实现常见进制转换的示例代码

    下面是C语言实现常见进制转换的完整攻略: 一、关于进制转换 计算机中数据的存储最终都是以二进制的形式保存在计算机中的,不同进制只是将二进制转换为对应的进制。又因为进制之间符号位不同,例如二进制中符号位是0或1,因此在不同进制之间转换时需要注意符号位的问题。在C语言中,通常用以下4种进制进行转换:2进制、8进制、10进制和16进制。 有关进制转换的详细内容,可…

    C 2023年5月24日
    00
  • C/C++实现精灵游戏的示例代码

    让我来详细讲解一下“C/C++实现精灵游戏的示例代码”的完整攻略。 1. 前置知识 在开始编写精灵游戏的示例代码前,需要掌握以下知识: C/C++基本语法和语言特性; 数据结构和算法知识; 图形学相关知识。 2. 精灵游戏示例代码实现 下面我们通过两个示例说明如何使用C/C++实现精灵游戏的示例代码。 示例一:飞行游戏 首先,我们看一个简单的飞行游戏示例。 …

    C 2023年5月23日
    00
  • 分享一下8年C++面向对象设计的经验体会

    下面是我分享关于“分享一下8年C++面向对象设计的经验体会”的完整攻略: 1. 熟悉C++语言基础和面向对象编程概念 要想掌握好C++面向对象设计,首先需要对C++语言基础和面向对象编程概念有充分的认识和熟练掌握。这包括了C++语言基本语法、指针、引用、构造与析构函数、继承、多态和模板等。只有对C++语言有深入的了解,才能保证在面向对象设计时能更加灵活地运用…

    C 2023年5月22日
    00
  • win11检测工具在哪? Win11系统自带检测工具的使用方法

    Win11系统是微软最新推出的操作系统,它的配置要求相比之前的版本更高,因此很多用户想要升级到Win11系统,但是不知道如何检测自己的计算机是否支持该系统。本文将为大家介绍Win11检测工具的位置和使用方法。 Win11检测工具在哪? Win11检测工具是Microsoft提供的一款小型软件,可以帮助你检测你的计算机是否符合Win11系统的系统配置要求。你可…

    C 2023年5月23日
    00
  • C++常见错误中英文对照表

    那么首先我们来讲一下“C++常见错误中英文对照表”的攻略。 标题 我们的文章首先要有一个合适的标题,可以使用一级标题(#)来表示: # C++常见错误中英文对照表 简介 接下来是简介,用来介绍我们的主题并简单概括一下文章的内容: 本文整理了常见的C++错误及其对应的中英文对照表,希望能帮助读者更好地理解和排查错误。 错误列表 然后我们就可以列出常见的错误及其…

    C 2023年5月23日
    00
  • 实例详解Android中JNI的使用方法

    实例详解Android中JNI的使用方法 在 Android 应用中,如果需要使用一些 C/C++ 的库或代码,就需要使用 JNI 技术来调用。本文将介绍在 Android 中如何使用 JNI。 1. 环境准备 首先,需要下载 JNI 开发环境,并配置好环境变量。可以在官网下载 NDK,解压缩后配置环境变量: export PATH=$PATH:/path/…

    C 2023年5月23日
    00
  • c++如何实现跳表(skiplist)

    跳表(skiplist)是一种随机化的数据结构,它允许快速查询一个有序序列中的元素,并且它的插入和删除操作具有相对较低的时间复杂度。下面我们将介绍如何使用C++实现跳表。 基本思路 跳表的基本思路是建立多层索引,即使用多级指针来跳过一些元素,在链表的基础上进行优化。第一层是原始链表,其他层则是链表的子集。每一层的元素数量越来越少,随着层数的增加,跳过元素的能…

    C 2023年5月23日
    00
  • C语言实现学生消费管理系统

    【C语言实现学生消费管理系统攻略】 一、需求分析 对于学生来说,管理自己的消费是很有必要的。因此我们需要实现一款学生消费管理系统,具备以下功能: 学生信息管理:包括姓名、学号、性别等信息。 消费信息管理:包括日期、消费品种(如食物、书籍等)、消费金额等信息。 消费查询功能:能够查询某一段时间内的消费情况。 统计分析功能:能够统计学生的消费情况,如消费总额、平…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部