Logcat是Android开发调试中最经常使用的一个工具,Android Studio 1.2.2中默认对Logcat调试的颜色已经有所区分,但若是你想要定制本身的调试日志对应的字体颜色,以便更好地区分verbose、debug、error、info、warning等分类信息,那么下面看看如何来自定义Logcat的提示信息。html
经过菜单File-->Setting-->Editor->Colors & Fonts->Android Logcat进入,因为咱们在以前的[2] “编辑字体设置”中已经设置了myDarcula Scheme,所以会看到以下界面:android
这里能够看到有6种调试级别:Assert、Debug、Error、Info、Verbose、Warning。app
注意须要先将右边Use inherited attributes选项去掉打钩,而后才能够自定义颜色,此时双击右边Foregound图标就能够为每种分类设定特定的颜色了:ide
选择好颜色后在下方该调试级别文字会当即发生变化,很是直观。工具
在[3]的第6部分,初次认识了Logcat,下面仔细看看如何来使用Logcat来快速查找关心的日志信息:字体
左侧可看到Logcat对话窗口,右上方可依次看到Log Level过滤选项、搜索过滤输入框、以及Filter Configuration选项。ui
选择Edit Filter Configuration,出现“Create New Logcat Filter”窗口,其中可设置一个或多个选项来过滤日志,并为这一组过滤参数指定一个Filter Name:spa
. 可经过正则编写的Log TAG.net
. 可经过正则编写的Log Messagedebug
. Package Name
. PID
. Log Level
这里咱们根据TAG和Level设置两个过滤项,分别命名为firstActivity与secondActivity:
设置完成后,在右侧下拉列表中就能够看到设置好的两个过滤项: firstActivity与secondActivity了。
为了在代码中输出日志信息,须要使用Log类(import android.util.Log)。一个好的实践是针对每一个类/活动定义一个TAG常量,例如取当前类/活动的名称做为TAG,而后利用log.v, log.d, log.i, log.w, log.e方法输出日志。
这几个方法的最基本调用方式为第一个参数为@tag, 用于标识log消息的sorce,一般使用类或者活动名称做为tag, 可在Logcat中基于tag快速过滤。第二个参数为日志串@msg,返回值int表示发送日志消息的字节数。
public static int v(String tag, String msg) public static int d(String tag, String msg) public static int i(String tag, String msg) public static int w(String tag, String msg) public static int e(String tag, String msg)
注意:当调用
Log.v(TAG, "index=" + i);
时,编译器使用一个StringBuilder, 至少涉及3次分配操做:StringBuilder自身,buffer, 以及String对象。实际上还有另一次buffer分配与复制,将对垃圾回收GC形成更大的压力。这也就意味着若是你的log消息被过滤掉,则这里会对系统有较大的负荷-不断地作buffer的分配与释放(That means that if your log message is filtered out, you might be doing significant work and incurring significant overhead.)
日志调用举例,判断activity建立时以前是否存在状态信息:
import android.util.Log; ... public class MyActivity extends Activity { private static final String TAG = MyActivity.class.getSimpleName(); ... @Override public void onCreate(Bundle savedInstanceState) { if (savedInstanceState != null) { Log.d(TAG, "onCreate() Restoring previous state"); /* restore state */ } else { Log.d(TAG, "onCreate() No saved state available"); /* initialize app */ } } }
代码中还能够捕获异常并输出调用栈到日志中:
void someOtherMethod() {
try {
...
} catch (SomeException e) {
Log.d(TAG, "someOtherMethod()", e);
}
}
注意: 当准备发布app时须要将debug log消息以及调用栈输出信息删除。能够设置一个DEBUG flag,而后将调试日志输出都放在条件语句中。
4. 在Debugger模式下运行应用程序
待续
参考资料:
[1] Android Studio使用小技巧:自定义Logcat, http://www.jb51.net/article/65515.htm
[2] Windows环境下Android Studio系列3—简单设置. http://my.oschina.net/1pei/blog/469674
[3] Windows环境下Android Studio系列4—界面介绍, http://my.oschina.net/1pei/blog/469845
[4] Debugging with Android Studio, https://developer.android.com/intl/zh-cn/tools/debugging/debugging-studio.html
[5] class log, https://developer.android.com/intl/zh-cn/reference/android/util/Log.html
[6] 第一行代码——Android, 郭霖著, 人民邮电出版社, 2014.08.