android:分享 一个非常强大的LOG开关---Log.isLoggable
1、API亮点:
此API能够实现不更换APK。在出问题的手机上就直接能抓到有效log,能提升不少工作效率。
、API介绍
近期在解决短信问题时。看到一个非常强大的LOG开关---Log.isLoggable
1. if (Log.isLoggable(LogTag.TRANSACTION, Log.VERBOSE)) {
2. Log.v(TAG, "Creating TransactionService");
3. }
进入framework中查看isLoggable方法的定义,发现这是一个用了JNI的方法。只是方法声明上有非常多凝视。
细致看了下,发现这是android给大家的一个礼物。
原文大致意思:检查当前的tag是否在指定的log级别。
一般默认的log级别是INFO,这也就意味着在这之上包含INFO的log都会被输出。你能够通过设置系统属性改动默认的log级别,运行例如以下命令就可以:
1. setprop log.tag.;YOUR_LOG_TAG> ;LEVEL
你也开能够将这句代码写进local.prop文件中面,而且将这个文件放到/data/local.prop。依据上面的指导。试着运行下以下的命令:
1. adb shell setprop log.tag.Mms:transaction VERBOSE
接着发了一条彩信试验。有效log都输出来了。
我们在这个基础上在进行一些挖掘。看看google还给我们留了哪些惊喜。从上面第二段代码中的LogTag.TRANSACTION,能够看到Mms的包里面有个LogTag.java文件,发现里面果然声明了不少常量:
1. public static final String TRANSACTION = "Mms:transaction";
2. public static final String APP = "Mms:app";
3. public static final String THREAD_CACHE = "Mms:threadcache";
4. public static final String THUMBNAIL_CACHE = "Mms:thumbnailcache";
5. public static final String PDU_CACHE = "Mms:pducache";
6. public static final String WIDGET = "Mms:widget";
7. public static final String CONTACT = "Mms:contact";
这一个个都是彩信里面重要log开关。知道了这些以后调试彩信就方便多了,不用换APK,在出问题的手机上就直接能抓到有效log。能提升不少工作效率。我们接着载回去看看isLoggable(Stringtag,
int level)在哪里有调用,发现除了framework层和Mms应用。还有Contacts等重要模块有调用,以后调试这些模块都会方便非常多。
android:分享 一个非常强大的LOG开关---Log.isLoggable的更多相关文章
- android:分享 一个很强大的LOG开关---Log.isLoggable
标签:android分享 一个很强大的log开 1.API亮点: 此API可以实现不更换APK,在出问题的手机上就直接能抓到有效log,能提升不少工作效率. 2.API介绍 最近在解决短信问题时,看到 ...
- android 分享一个处理BaseAdapter,getView()多次加载的方法
一:BaseAdapter介绍 BaseAdapter是listview,gridview等列表,使用的数据适配器,它的主要用途是将一组数据传到ListView.Spinner.Gallery及Gri ...
- Android 分享一个SharedPreferences的工具类,方便保存数据
我们平常保存一些数据,都会用到SharedPreferences,他是保存在手机里面的,具体路径是data/data/你的包名/shared_prefs/保存的文件名.xml, SharedPrefe ...
- 分享一个强大的采集类,还可以模拟php多进程
做采集的时候,可以使用file_get_contents()去获取网页源代码,但是使用file_get_contents采集,速度慢,而且超时时间,不好控制.如果采集的页面不存在,需要等待的时间很长. ...
- 分享一个完美的新闻客户端(酷商城)Android源码
分享一个完美的新闻客户端(酷商城)Android源码,这个源码项目是从安卓教程网转载过来的,项目主要是解析html,fragment,异步缓存图片加载,webview加载网页等.可以正常的运行的,我已 ...
- 【Android】 分享一个完整的项目,适合新手!
写这个app之前是因为看了头条的一篇文章:http://www.managershare.com/post/155110,然后心想要不做一个这样的app,让手机计算就行了.也就没多想就去开始整了. ...
- Gradle build设置自动log开关
应用场景 通常情况下我们的apps发布后也就是release模式下log是不显示的,debug模式下是显示log的,但是在特殊情况下我们测试release包的时候需要log的时候,就无法使用Build ...
- 封装一个简单好用的打印Log的工具类And快速开发系列 10个常用工具类
快速开发系列 10个常用工具类 http://blog.csdn.net/lmj623565791/article/details/38965311 ------------------------- ...
- 分享一个Snackbar工具类 SnackbarUtils;
分享一个Snackbar工具类,源代码也是在Github上面找的,自己做了一下修改: 功能如下: 1:设置Snackbar显示时间长短 1.1:Snackbar.LEN ...
随机推荐
- [COCI2017-2018 Contest5] Birokracija
题目描述 Mirko has become CEO of a huge corporation. This corporation consists of N people, labeled fro ...
- [POI2008]Mirror Trap
题目大意: 一个$n(n\le10^5)$个顶点的格点多边形,每条边平行于网格线,每个角度数均为$90^\circ$或$270^\circ$,周长小于$3\times10^5$,每个顶点可以安装激光发 ...
- iptables 中的SNAT 和MASQUWERADE
NAT 是 network address translation 的缩写 网络地址转换 网络地址转换主要有两种:SNAT和DNAT,即源地址转换和目标地址转换 SNAT:源地址转换 eg:多台pc机 ...
- JDK开发WebService
java开发web service最简单的方式是用jdk6自带的支持web service的注解功能. 1.编写代码如下: package net.swiftlet; import javax.jws ...
- 常见java异常
1. java.lang.NullPointerException(空指针异常) 调用了未经初始化的对象或者是不存在的对象 经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时 ...
- 【Hadoop】YARN 原理、MR本地&YARN运行模式
1.基本概念 2.YARN.MR交互流程 3.源码解读
- CentOS7环境下SSH端口修改笔记
CentOS7环境下SSH端口修改笔记 说明: CentOS7服务器环境,默认SSH端口为22,考虑到安全方面问题,欲修改端口为62231(机器内网IP为192.168.1.31) ssh配置文件和i ...
- Centos 7 联想Y430P无线网卡驱动安装 过程参考
Centos 7 联想Y430P无线网卡驱动安装 过程参考 ABRT 已检测到 [root@endv ~]# yum install -y rdesktop 已加载插件:fastestmirror, ...
- XP如何在桌面新建宽带连接的快捷方式
1 打开控制面板,点击网络和Internet连接 2 如果存在宽带连接选项. 则点击左侧的网上邻居,然后点击查看网络连接 右击宽带连接,点击创建快捷方式,放到桌面,改一下快捷方式的名字即可. 3 ...
- flask的分页功能
分页是个很通用的东西,在flask中,有一个macro的语法,类似于宏,我们可以将通用的东西通过macro写入单独的html文件以方便维护,减少代码量.下面是我的分页的macro文件render_pa ...