Android的日志系统分为四层,分别是:
-
核心层(kernel):负责底层的输入输出、内存、磁盘、进程等操作。本层日志主要是通过printk等函数输出,并存储在ring buffer中,只有在安卓手机发生严重错误时才需要查看。
-
系统层(system):包括system_server、Zygote和ActivityManager等系统服务,存放的是系统服务的日志信息。该层日志主要是通过Android中的Log类以及底层的write函数实现,用来记录系统层中关键服务的运行状况,存在于原生分区的"/system/etc"目录下。
-
应用层(应用程序)(app):存放的是应用程序的日志信息,例如:自定义日志、开发错误日志等。该层日志主要是通过Android中的Log类进行记录,存在于/data/logger目录当中。
-
第三方库层(第三方库)(vendor):存放的是第三方库中的日志信息。该层日志主要是通过及其选择的日志框架实现得,存在于/vendor/etc目录当中。
Logcat是Android中的一个命令行工具,可以用于查看日志。我们可以使用Logcat对上面四层日志中的信息进行筛选、过滤和查看。
下面简单介绍一下如何使用logcat查看日志信息。
注意:在电脑端,需要提前安装ADB(Android Debug Bridge)工具。
- 打开终端(Linux或macOS),或命令行窗口(Windows)
- 连接手机到电脑,并输入以下命令:
adb logcat
该命令会等待设备连接,并输出所有的日志信息。
- 多数情况下我们可能只对错误日志感兴趣,可以加上-f选项,指定输出到一个文件中:
adb logcat -f /sdcard/logcat.txt
该命令将日志输出到手机存储卡根目录下的logcat.txt文件中。
如果想关闭logcat,可以使用CTRL+C或执行以下命令:
adb logcat -c
- 过滤日志,例如只想查看某个进程或某个标签的日志:
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技术站