在android系统中, 提供了一个轻量级的日志系统。该日志系统基于在内核中实现的一个字符设备驱动
logger(misc字符设备驱动)。通过该字符设备驱动,android分别提供了C/C++和Java层的日志输出函数接口。
Java接口主要分布在android.util.Log类中。
其中它信赖的JNI层实现文件位于frameworks/base/core/jni/android_util_Log.cpp文件中。
调用路径如下:
android_util_Log_println_native(与Log.java中的本地方法println_native对
应)->__android_log_buf_write(system/core/liblog/logd_write.c)->write_to_log(它是一个
函数指针,初始值设为__write_to_log_init, 之后其值为__write_to_log_kernel)
在__write_to_log_kernel函数中, 将相应的日志信息写入到对应的字符设备中定义的环形缓冲区中。在
C/C++程序中,可以通过__android_log_buf_print(该函数信赖__android_log_buf_write函数)来输出日
志信息,当然我们也可以通过log.h(frameworks/base/include/utils/log.h也即system/core
/include/log.h)中定义的一些宏来输出日志信息。
Android日志系统中信赖的字符设备驱动文件位于kernel/common/drivers/staging/android/logger.h和
kernel/common/drivers/staging/android/logger.c中。
在andriod日志系统中,对日志信息内容进行了分类,主要分为三类:1.radio-related信息。 2.系统/硬件事
件信息。 3.除上述二类的其他任何信息。在驱动中分别创建了三个不同的字符设备与它们相对应:

此外, android系统中还提供了一个称为logcat的命令来作为一种调试辅助工具,其实现为系统中的一个命令,也是依赖于底层定
义的设备驱动。
本文介绍了Android系统的轻量级日志系统,该系统基于内核的logger驱动,提供了C/C++和Java接口。在Java层,日志主要通过android.util.Log类进行输出,而在JNI层的实现位于android_util_Log.cpp。日志信息被写入到内核中的环形缓冲区,分类为radio-related、系统/硬件事件和其他信息,并通过logcat命令作为调试工具。
6891

被折叠的 条评论
为什么被折叠?



