Android Logging System Architecture
来源:互联网 发布:软件架构和软件结构 编辑:程序博客网 时间:2024/04/27 13:22
任何一本讲述Android开发的教科书在讲如何用模拟器调试应用程序的时候都会用到Log类的Java API以及配套工具logcat或者DDMS。这是Android系统里面单独设计的一整套Log机制,与Kernel Log机制类似,也有优先级 (Priority) 的概念,虽然优先级的定义稍有不同。除此之外,还对Log添加了对应的TAG,以此来对Log的类别作区分。后面我们将详细讲述该Logging机制。
Android Logging System Architecture
Android Logging System对Java层以及Native层都提供了对应的API,我们通过下图先看一下Android Logging System整体架构。
从上图我们可以看出
1. 在 Kernel 层,设计了4个 Logger 设备及相应的驱动程序,这4个 Logger 设备分别采用了一块内存区域作为循环缓冲区,用于存放 main/system/event/radio log。详细的实现代码可以参考文件 kernel/drivers/staging/adroid/logger.c
2. 在 Native 层封装了对 kernel log buffer 的写入操作,并且在写入前根据传入的TAG决定是否将log写入到 Radio Log Buffer。作为Library向上层提供API。详细的实现可以参考文件夹 system/core/liblog/ 下面的文件。
3. 为了方便 Native 应用程序以及共享库的开发,提供了 macro 定义的 Log wrapper,这样在 Native 层可以直接使用 LOGV/LOGD/LOGI/LOGW/LOGE 以及相关的 API 打印 Log 到 Log Buffer. 详细的定义以及其他相关的 macro 可以参考文件 system/core/include/log/log.h
4. 为了给 Java层提供接口,在 Native 层实现了JNI接口,为 Java 层服务。详细的实现可以参考文件夹 frameworks/base/core/jni/ 下面的 android_utils_Log.cpp 和 android_utils_EventLog.cpp 文件。
5. 在 Java 层对 JNI 接口进行了封装,分别实现了 android.util.Log 和 android.util.EventLog 类,用于给 Java Application 以及 Java library 提供 Log 接口。详细的实现可以参考 frameworks/base/core/java/android/util/ 下面的 Log.java 和 EventLog.java 文件。
API 与优先级
和 Kernel Log 机制类似,Android Logging System 也有优先级的概念。相关的优先级定义可以参考下表。
优先级的设置有两个用途,一是可以利用优先级来揭示Log的重要程度,自然越致命的信息越重要。二是Log工具可以根据不同的Log级别来过滤掉不关心的Log。
搭配不同的Log级别,就衍生出了各个级别的Log API。
例如,在Native层定义了如下的Macro,LOGV / LOGD / LOGI / LOGW / LOGE,用来打印不同级别的log。(此处举例的API并非 Native层定义的所有的API,请参考 system/core/include/log/log.h 文件查阅完整的定义)
而在Java层的 android.util.Log 类则定义了 Log.v / Log.d / Log.i / Log.w / Log.e 接口,用于在Java层打印Log。更完整的API定义请参考文件 frameworks/base/core/java/android/util/Log.java。
- Android Logging System Architecture
- android logging system
- Android Logging System
- Android Logging System
- android logging system
- Android Logging System
- Android Logging System
- Android System Architecture
- Android日志系统(logging system)详解
- Centralized Logging Architecture
- Centralized Logging Architecture
- Centralized Logging Architecture
- Security and System Architecture: Comparison of Android Customizations 阅读笔记
- HyperTransport System Architecture
- System Architecture with XML
- adnroid system architecture
- DM81xx Gstreamer System Architecture
- architecture&platform&system&framework
- log4j配置
- 一點通 - Windows 7 啟用系統管理員 Administrator 帳戶 (MVP 撰寫)
- Android Studio1.2 新特性的一些简述
- 免费把pdf转换成excel
- c++内存分配
- Android Logging System Architecture
- ZOJ3329之经典概率DP(这类概率dp的解题规律)
- Context分析
- Java写的爬虫的基本程序
- UIWindow不使用代理如何实现根控制器的跳转(页面跳转的实现)
- 欢迎使用CSDN-markdown编辑器
- visual Studio 2015 RC 发布了大家下载体验吧
- 调用线程必须为 STA,因为许多 UI 组件都需要
- IOS多态