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 ...
随机推荐
- SQL SERVER Update from 使用陷阱
原文:SQL SERVER Update from 使用陷阱 update A set from A left join B on 此方法常用来使用根据一个表更新另一个表的数据,来进行数据同步更新.若 ...
- linux命令行翻页
在linux上面执行命令,若命令太多屏幕显示不完,通过Shift+pageup/pageDown来查看. putty连接linux后执行就不存在这个问题.
- App Distribution Guide (二)
Configuring Your Xcode Project for Distribution You can edit your project settings anytime, but som ...
- A folder failed to be renamed or moved--安装Android SDK的问题
对于Android是一直想学却一直未学,行动跟不上想法.现在,终于付诸于行动了. 首先,我找的第一个Android的资料是大话企业级Android,前阵子刚看完大话设计模式,通俗易懂,还是比较喜欢这一 ...
- 上机题目(0基础)- Java网络操作-Socket实现client和server端通信二(Java)
上一节实现了client像server端发送请求.本节将实现server端向client回传信息.实现原理非常easy,在原来的基础上.在server端实现输出流,在client实现输入流就可以,详细 ...
- 如何看一个VC工程具体是什么工程?
VC6等可以创建MFC, Win32等工程,拿到一个工程,怎么判断是什么工程呢? VC6全文检索看看有没有theApp 如果有一般就是MFC的 (VS?)看看工程设置,入口点函数写的是什么,/subs ...
- iptables firewall-cmd
iptables -F iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT iptables -A IN ...
- Oracle基础 PL-SQL编程基础(3) 循环结构
循环结构: 1. LOOP循环结构 语法: LOOP 要执行的语句; EXIT WHEN <条件> --条件满足则退出循环 END LOOP; 示例:循环输出1-10的整数 DECLA ...
- 使用LBS(地理位置)
一.使用之前的简单封装的OkHttpUtil http://www.cnblogs.com/itfenqing/p/6758909.html 二.关键代码: public class MainActi ...
- 非阻塞socket中read、write返回值
read返回值 >0 读取数据的长度 =0 接收到对端发送的FIN,表示对端的写端关闭. <0 如果errno=EINTR.收到信号并从信号处理函数返回时,慢系统调用会返回并设 ...