很简单的话题。当我听到有人在讨论自己实现机制控制 log 输出时,我觉得还是有必要记录一下。最近让我比较困扰的是,很多 Android 基本的技巧都不被知晓。许多人的“锤子”意识很严重,一直使用以往的经验处理一切问题。
影响 Android log 输出的属性
Android 日志存储在由 logd 维护的一组化环形缓冲区,这组缓冲区包括:main:用于存储大多数应用日志。
radio:用于存储通信相关的日志。
events:用于存储 Event 事件日志。
system:用于存储源自 Android 操作系统的消息。
crash:用于存储崩溃日志。
stats:用于存储系统状态事件日志。
security:用于存储安全相关事件日志。
kernel:用于存储 Linux 内核日志,其输出受其他几个属性的影响,详见 Logcat 读取 Kernel Log。
Android 日志的每个条目都包含一个优先级、一个日志所属模块标记以及实际的日志消息。日志优先级代表日志输出的级别,其优先级为:VERBOSE(V) < DEBUG(D) < INFO(I) < WARNING(W) < ERROR(E) < FATAL(A) < SILENT(S)。日志系统根据日志级别来输出,仅输出当前级别及以下级别的日志。日志级别可以通过以下四个属性来控制,其优先级如下,persist.log.tag.:模块日志级别,优先级高于系统日志级别,永久存储。
log.tag.:模块日志级别,优先级高于系统日志级别,临时存储,重