Android系统有一个日志功能,允许系统从应用程序和系统组件记录信息。这与Linux内核自己的日志系统是分开的,内核使用“dmesg”或“/proc/kmsg”访问。日志系统在内核缓冲区中存储消息。

$ adb shell dmesg > dmesg.txt 内核log

日志系统包括:


用于存储日志消息的内核驱动程序和内核缓冲区。


用于生成日志条目和访问日志消息的C、c++和Java类。


用于查看日志消息的独立程序(logcat)


能够查看和过滤来自主机(通过eclipse或ddms)的日志消息



Linux内核中有4个不同的日志缓冲区,它们为系统的不同部分提供日志记录。访问不同的缓冲区是通过文件系统中的设备节点/dev/log实现。



四个日志缓冲区是:


main—应用程序日志。


events—用于系统事件信息。


radio—无线电广播和电话相关信息。


system—用于低级系统消息和调试的日志。

各部分log抓取方法:

$ adb logcat -d -v time -b "main"   >  main.txt
$ adb logcat -d -v time -b "system" >  system.txt
$ adb logcat -d -v time -b "events" >  events.txt



直到2010年,只有前三个日志存在。系统日志被创建是为了将系统消息保存在一个单独的缓冲区中(在“/dev/log/main”之外),这样一个冗长的应用程序就不能超过系统消息并导致它们丢失。



日志中的每个消息都包含一个标记,该标记指示消息来自的系统或应用程序的一部分, 标记包括时间戳、消息日志级别(或由消息表示的事件的优先级)和日志消息本身。



除了“事件”之外,所有日志缓冲区都使用自由格式的文本消息。“事件”缓冲区是一个“二进制”缓冲区,事件消息(和事件参数)以二进制形式存储。这种方式更紧凑,但在从缓冲区读取事件时需要额外处理,比如消息查找数据库,以解码事件字符串。



日志系统自动将带有特定标记的消息路由到radio缓冲区。其他消息被放置到各自的缓冲区中。

android系统日志分析 android系统日志在哪里_系统消息