Android中LOG机制详解(上)
来源:互联网 发布:维多利亚贝克汉姆知乎 编辑:程序博客网 时间:2024/05/01 12:41
一、简介
Android中LOG的实现架构如下图所示,这基本上也是Android的某个模块实现各个层次的经典架构。
图1
Android应用程序通过Framework提供的Log类来进行日志的输出;而Log类其实是通过JNI函数来进行日志输出;JNI函数则是调用底层库函数进行日志的输出;然后库函数通过操作映射的设备文件操作设备。
在Linux中,系统其实把LOG作为一种设备处理,并把它映射为文件。因此库函数操作映射的LOG文件,其实是通过kernel中的LOG的Driver完成相应的操作。
关于Android中LOG实现架构更详细的流程图请参考《Android LOG机制流程图》
二、类android.util.Log
Android的Java程序通过android.util.Log类来输出Log,下图2.1列出了我们常用的Log的静态方法。
图2.1
一般,要输出Log信息,可直接调用Log.v()/Log.d()/Log.i()/Log.w()/Log.e()等类方法。这里之所以有这么多有区分的方法,这也是Log的分类。Log的分类就如同Log的静态常量成员定义的那样,而Log的优先级按照数字大小排列,数字大的优先级高。Log.wtf()一般用于输出的非常致命的FAULT信息(What a Terrible Failure),报这个错误,不光是在Log里记录,还要在界面上有提示,并可能杀死当前的进程。
它在输出日志的同时,它会把此处代码此时的执行路径(调用栈)打印出来。在调试时,我们可以使用它来打印当前代码的执行栈。
isLoggable()用于判断是否需要输出日志,如果日志的tag太长或如果要输出的LOG优先级低于当前设置的优先级,则返回false,表示不用输出该日志。在Java程序中,用Log的方法打印Log之前,可以先用isLoggable()判断一下是否需要,才进行输出日志。
另外,Log.println()能达到与Log.v()/Log.d()/…等方法同样的输出效果,只是在用它时,要指定对应的优先级。
2.1、类android.util.Log的java实现
类android.util.Log的java实现是比较简单的。类android.util.Log的构造函数是私有的,并不会被实例化,只是提供了静态的属性和方法。
而android.util.Log的各种Log记录方法的实现都依赖于native的实现println_native(),Log.v()/Log.d()/Log.i()/Log.w()/Log.e()最终都是调用了println_native()。如Log.d()的实现:
public static int d(String tag, String msg) {
return println_native(LOG_ID_MAIN, DEBUG, tag, msg);
}
Android LOG机制流程图
以下只是Android LOG机制流程图
- Android中LOG机制详解(上)
- Android中LOG机制详解(上)
- Android中LOG机制详解(下)
- Android中LOG机制详解(下)
- Android中Log机制详解
- Android中Log机制详解
- Android中Log机制详解
- Android中LOG机制详解
- Android 中 Log 机制详解(转)
- Android中Log机制
- android系统中log机制
- Android中Log图文详解
- Android7.0 klog机制(如何将android log打印到kernel log中)
- Android Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
- android的Log详解(Log.v Log.d Log.i Log.w Log.e)
- 【Android】 Android中Log调试详解
- (Android系统)android log机制浅析
- Android Log 机制
- 解决lnmp更改设置默认首页问题
- 【图像加密】图像处理之Logistic混沌置乱加密
- Head_First_Python学习笔记(三)
- 下载apk文件在/data/data/packagename/files/目录下,如何安装成功
- jq+json+ajax demo
- Android中LOG机制详解(上)
- HDU 2433 最短路
- PopupWindow工作笔记
- ubuntu14.04安装Angularjs
- IOS_月薪10k以上知识大总结
- Android常用工具类(收藏)
- Bootstrap栅格系统研究
- IntelliJ IDEA 将 Maven 构建的 Java 项目打包
- HDU3191 次短路条数