文档章节

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

一配
 一配
发布于 2015/07/15 09:33
字数 1132
阅读 10656
收藏 6

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,因此会看到如下界面:

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

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

                  

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

2. Logcat过滤选项

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

    

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

    

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

     . 可通过正则编写的Log TAG

    . 可通过正则编写的Log Message

    . Package Name

    . PID

    . Log Level   

               

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

            

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

   

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.

© 著作权归作者所有

一配
粉丝 35
博文 146
码字总数 117133
作品 0
西城
私信 提问
加载中

评论(1)

兰若寺
兰若寺
0
Windows环境下Android Studio系列4—界面介绍

参考资料 [1] Android Studio常用功能介绍, http://ask.android-studio.org/?/article/23 [2] Windows环境下Android Studio系列1—下载与安装, http://my.oschina.net/1pei/blog/467210 [3] ......

一配
2015/06/23
1K
0
AS问题解决系列4—HAX is not working

问题描述 在Windows环境下Android Studio 1.2.2中运行时,出现下面错误信息: HAX is not working and emulator runs in emulation mode emulator: The memory needed by this AVD exceeds t......

一配
2015/07/18
12.8K
0
Android 开发人员必知的50个秘诀、技巧和资源

作者撰写本文的初衷,是为了罗列出Android Studio有用的提示、技巧、快捷方式和参考资源,将提高您的整体效率和操作性能。 显然,还有很多优化、快捷方式等,但作者为了保持这篇文章的简短,...

王练
2017/01/11
2.9K
9
Windows环境下Android Studio系列2—初次运行

参考资料 [1] Windows环境下Android Studio v1.0安装教程, http://ask.android-studio.org/?/article/9 [2] stormZhang的Android Studio系列教程一--下载与安装, http://stormzhang.com/dev......

一配
2015/06/17
830
0
nomasp 博客导读:Lisp/Emacs、Algorithm、Android

版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/44966625 Profile Introduction to Blog 您能看到这篇博客导读...

nomasp
2015/09/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

vps管理程序win和Linux都有啥推荐?

如果你的手上有多台Windows的vps推荐您用iis7远程桌面管理工具,但是今天着重说一下linux vps需要管理,那有没有一个免费的工具监控在线率、CPU、内存、网络等使用情况并以网页的形式反馈出来...

1717197346
18分钟前
3
0
Java调用以太坊智能合约

Web3j让Java开发者可以轻松地访问以太坊区块链并调用区块链上的智能合约的方法,在本教程中,我们将学习如何创建一个简单的命令行应用来访问区块链上的合约。 1、什么是web3j Web3j是一个开发...

汇智网教程
22分钟前
2
0
从零开始入门 K8s| 阿里技术专家详解 K8s 核心概念

作者| 阿里巴巴资深技术专家、CNCF 9个 TCO 之一 李响 一、什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译...

阿里云官方博客
25分钟前
4
0
微信加好友 通过初始wxid,恢复好友聊天记录

一、聊天记录恢复以及怎么获得用户的wxid 聊天记录网上很多方法、前提是你没有点击微信设置里面的清除聊天记录 单单是删除了与这个人对话 记录还是会存在的 之前我用的是楼月的微信聊天恢复助...

青峰Jun19er
27分钟前
4
0
鲲鹏发力,神秘中国架构现世,ZStack搭上了国产化的高铁?

以下文字来自ZStack社区用户,ZStack作为国产自研的开源云平台,感谢在国产化道路上大家一直以来的支持,接下来也请大家继续指教,ZStack也会坚持初心,抗好国产化的大旗。 鲲鹏这两天挺火的...

ZStack社区版
34分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部