Android日志系统分析之开篇
在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的命令来作为一种调试辅助工具,其实现为系统中的一个命令,也是依赖于底层定
义的设备驱动。
转载于:https://my.oschina.net/fuyajun1983cn/blog/263836
Android日志系统分析之开篇相关推荐
- Android日志系统分析之日志设备驱动程序代码阅读
android日志系统中定义了设备驱动的实现代码位于kernel/common/drivers/staging/android/logger.h和kernel/common/drivers/stagi ...
- Android 日志系统分析(三):logcat
一.前言 logcat 作为读取日志的工具,相当于client 的角色:在前两篇文章中,关于 logcat 如何与其他部分沟通获取日志信息的流程已经介绍的比较清晰,本文不在赘述,转而归纳一下 logc ...
- Android10.0 日志系统分析(四)-selinux、kernel日志在logd中的实现-[Android取经之路]
摘要:本节主要来讲解Android10.0 selinux.kernel日志在logd中的实现,包括LogAudit.LogKlog的源码分析 阅读本文大约需要花费15分钟. 文章首发微信公众号:In ...
- Android10.0 日志系统分析(三)-logd、logcat读写日志源码分析-[Android取经之路]
摘要:本节主要来讲解Android10.0 logd.logcat读写日志源码内容 阅读本文大约需要花费20分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Andro ...
- Android10.0 日志系统分析(二)-logd、logcat架构分析及日志系统初始化-[Android取经之路]
摘要:本节主要来讲解Android10.0 日志系统的架构分析,以及logd.logcat的初始化操作 阅读本文大约需要花费15分钟. 文章首发微信公众号:IngresGe 专注于Android系统级 ...
- Android10.0 日志系统分析(一)-logd、logcat 指令说明、分类和属性-[Android取经之路]
摘要:本节主要来讲解Android10.0 日志系统的logd.logcat相关指令说明.日志分类和常用日志属性 阅读本文大约需要花费15分钟. 文章首发微信公众号:IngresGe 专注于Andro ...
- Android系统(111)---Android稳定性专题之开篇
Android稳定性专题之开篇 一.稳定性问题有哪些 Android应用程序自身的稳定性问题主要有两类一类是Crash,一类是ANR. Crash:比如空指针.数组越界.子线程中刷新UI等错误造成的程 ...
- Android编译系统分析四:实战-新增一个产品
通过上一节"android编译系统(三)-make"的分析,初步理清楚了编译初期加载产品相关信息的流程,整个过程主要涉及三个文件:1.AndroidProducts.mk,2.具体 ...
- android log耗性能吗,一个高性能的Android日志库
clue 一个高性能的Android日志库. 为什么性能高 通常的Android日志库, 为了获取到class名, 方法名, 行号, 都是通过以下API实现的: StackTraceElement[] ...
最新文章
- java简介 ppt 精_《JAVA》5选择结构精篇课件.ppt
- 【Verilog HDL 训练】第 13 天(存储器、SRAM)
- python爬虫获取的网页数据为什么要加[0-python爬虫解析页面数据的三种方式
- jTessBoxEditor工具进行Tesseract3.02.02样本训练
- 经常使用命令 echo、@、call、pause、rem
- Java多线程之单例模式在多线程环境下的安全问题
- (六)Linux之设备驱动模型(续)
- c++ winpcap开发(10)
- APP录获取短信+通讯录网站源码
- ajax常见的status状态码
- Windows下VB6.0开发——VB程序断点调试与顺序执行不一致问题(通信原因)
- Win10校园网锐捷客户端犯病 可能有用的2个措施
- 智慧城市发展参差不齐 亟待分级分类破“短板”
- 315|大数据杀熟,如何才不被坑?
- Unity导入Mixamo动画,合并Mixamo动作
- Test Flight 测试使用说明
- EntityComponentSystemSamples学习笔记
- 天津专升本往届生学信网学历证书电子注册备案表查询下载操作步骤
- X线DR医学图像 --- DR医用滤线栅及摩尔纹详解 (五) 消除摩尔纹
- SQLSERVER格式化日期时间
热门文章
- 我的erlang TCP服务器
- Jenkins 使用 Kubernetes Plugin 完成持续构建与发布
- JavaScript导出Excel通用代码。
- android实践项目一实现简单的验证码和spinner下拉选项效果
- 批处理技巧:循环固定目录的子目录,然后向每个子目录拷贝文件
- confluence未授权模板注入/代码执行 cve-2019-3396
- golang interface{} 转 struct结构体
- golang 切片 slice 去掉重复元素
- python3 命令行参数处理库 argparse、docopt、click、fire 简介
- mysql 查看版本