欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > frameworks 之 日志打印

frameworks 之 日志打印

2025/2/25 13:38:58 来源:https://blog.csdn.net/u011410770/article/details/144650109  浏览:    关键词:frameworks 之 日志打印

frameworks 之 日志打印

  • 1. 常见日志类型
  • 2. 动态日志ProtoLog

讲解 anddroid 日志打印类型。

1. 常见日志类型

android 日志类型分为 6 类 分别为 main,system, radio, events, crash, kernel
查看帮助指令

adb shell logcat --help
  • main: 用于存储大多数应用和系统组件的日志信息。当你不指定缓冲区时,logcat 默认会从这个缓冲区读取日志
  • system: 这个缓冲区包含来自系统级别的日志消息,通常涉及系统进程和守护进程,这些信息通常比 main 缓冲区中的更为底层。
  • events:这个缓冲区记录了系统事件日志,如系统启动、关闭、以及应用程序的启动和终止等。这些日志通常以时间戳的形式记录
  • crash:当应用程序或系统组件崩溃时,相关的崩溃报告会被记录到 crash 缓冲区中。这有助于开发者分析崩溃的原因
  • kernel:缓冲区包含来自内核的日志消息。这些消息通常涉及硬件驱动程序、内存管理、进程调度等底层系统操作

可以通过 -b 指定对应的类型输出,默认是 all。

adb shell logcat -b main

system日志一般通过代码打印

Slog.i(TAG, "Restarting because process died: " + next);

evnets 日志一般通过代码,打印 而 EventLogTags 该类是生成的。一般可以通过日志的驼峰搜索,如 wm_resume。 一般可以搜索WmResume找到对应的打印

EventLog.writeEvent(EventLogTags.AM_ANR, mApp.userId, pid, mApp.processName,mApp.info.flags, annotation);
EventLogTags.writeWmResumeActivity(next.mUserId, System.identityHashCode(next),next.getTask().mTaskId, next.shortComponentName);

2. 动态日志ProtoLog

ProtoLog 日志作为高版本新增日志打印方式,作用可以随时通过adb 控制输出或隐藏。通过adb 可以查看其使用方法

adb shell wm -h

常用使用的方法如下

命令描述
wm logging startstart proto logging 开始Proto log输出,让你enable的Group生效;输出到Logcat时不需要start
wm logging stopstop proto logging
wm logging enable/disable [group…]按照groups启停ProtoLog,真正启动是start命令,调用start命令之后才输出
wm logging enable-text/disable-text [group…]启停动态日志,输出到logcat,不需要调用start命令就会开始输出

这里存在一个差别:enable和enable-text是有啥差别?
enable对应proto logging抓取会把日志写入到data/misc/wmtrace/路径下wm_log.winscope
enable-text对应就是logcat可以直接看到的,平时使用这个就ok了;

代码写法如下

ProtoLog.d(WM_DEBUG_STATES, "resumeTopActivity: Restarting %s", next);

比如我们想要查看对应的日志即可

adb shell wm logging enable-text WM_DEBUG_STATES

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词