Windows环境下Android Studio系列5—日志调试

1. 定制Logcat调试日志字体颜色

    Logcat是Android开发调试中最常用的一个工具,Android Studio 1.2.2中默认对Logcat调试的颜色已经有所区分,但如果你想要定制自己的调试日志对应的字体颜色,以便更好地区分verbose、debug、error、info、warning等分类信息,那么下面看看如何来自定义Logcat的提示信息。

    通过菜单File-->Setting-->Editor->Colors & Fonts->Android Logcat进入,由于我们在之前的[2] “编辑字体设置”中已经设置了myDarcula Scheme,因此会看到如下界面:

085202_180L_2288810.jpg

    这里可以看到有6种调试级别:Assert、Debug、Error、Info、Verbose、Warning。

    注意需要先将右边Use inherited attributes选项去掉打钩,然后才可以自定义颜色,此时双击右边Foregound图标就可以为每种分类设定特定的颜色了:

              085749_UCPY_2288810.jpg    

    选择好颜色后在下方该调试级别文字会立即发生变化,非常直观。

2. Logcat过滤选项

    在[3]的第6部分,初次认识了Logcat,下面仔细看看如何来使用Logcat来快速查找关心的日志信息:

    090930_lKJG_2288810.jpg

   左侧可看到Logcat对话窗口,右上方可依次看到Log Level过滤选项、搜索过滤输入框、以及Filter Configuration选项。

    091343_mNCF_2288810.jpg

    选择Edit Filter Configuration,出现“Create New Logcat Filter”窗口,其中可设置一个或多个选项来过滤日志,并为这一组过滤参数指定一个Filter Name:

     . 可通过正则编写的Log TAG

    . 可通过正则编写的Log Message

    . Package Name

    . PID

    . Log Level   

              091458_2Caf_2288810.jpg 

   这里我们根据TAG和Level设置两个过滤项,分别命名为firstActivity与secondActivity:

            092030_qgL8_2288810.jpg

   设置完成后,在右侧下拉列表中就可以看到设置好的两个过滤项: firstActivity与secondActivity了。

   092238_I5Fk_2288810.jpg

3. 代码中输出日志信息

     为了在代码中输出日志信息,需要使用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.

转载于:https://my.oschina.net/1pei/blog/478672

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值