Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志。
  • Log.v()。用于打印那些最为琐碎的、意义最小的日志信息。对应级别verbose,是Android日志里面级别最低的一种。
  • Log.d()。用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比verbose高一级。
  • Log.i()。用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮你分析用户行为数据。对应级别info,比debug高一级。
  • Log.w()。用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别warn,比info高一级。
  • Log.e()。用于打印程序中的错误信息,比如程序进入到了catch语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别error,比warn高一级。
其实很简单,一共就5个方法,当然每个方法还会有不同的重载,但那对你来说肯定不是什么难理解的地方了。我们现在就在HelloWorld项目中试一试日志工具好不好用吧。

protected voidonCreate(BundlesavedInstanceState) {
  super . onCreate(savedInstanceState);
  setContentView(R . layout . hello_world_layout);
  Log . d("HelloWorldActivity", "onCreate execute");
} 

  

 

 
Log.d()方法中传入了两个参数:第一个参数是tag,一般传入当前的类名就好,主要用于对打印信息进行过滤;第二个参数是msg,即想要打印的具体的内容。
现在可以重新运行一下HelloWorld这个项目了,点击顶部工具栏上的运行按钮,或者使用快捷键Shift + F10(Mac系统是control + R),等程序运行完毕,点击Android Studio底部工具栏的Android Monitor,在logcat中就可以看到打印信息了
 
 
快捷输入在Android Studio当中也是有的,比如你想打印一条debug级别的日志,那么只需要输入logd,然后按下Tab键,就会帮你自动补全一条完整的打印语句。输入logi,然后按下Tab键,会自动补全一条info级别的打印日志。输入logw,按下Tab键,会自动补全一条warn级别的打印日志,以此类推。另外,由于Log的所有打印方法都要求传入一个tag参数,每次写一遍显然太过麻烦。这里还有一个小技巧,我们在onCreate()方法的外面输入logt,然后按下Tab键,这时就会以当前的类名作为值自动生成一个TAG常量,如下所示:

public class HelloWorldActivity extends AppCompatActivity {
  private static final StringTAG = "HelloWorldActivity";
}

  

  

 
除了快捷输入之外,logcat中还能很轻松地添加过滤器,你可以在图1.32中看到我们目前所有的过滤器。
目前只有3个过滤器,Show only selected application表示只显示当前选中程序的日志, Firebase是谷歌提供的一个分析工具,我们可以不用管它,No Filters相当于没有过滤器,会把所有的日志都显示出来。那可不可以自定义过滤器呢?当然可以,我们现在就来添加一个过滤器试试。
点击图1.32中的Edit Filter Configuration,会弹出一个过滤器配置界面。我们给过滤器起名叫data,并且让它对名为data的tag进行过滤,如图1.33所示。
点击OK,你就会发现你已经多出了一个data过滤器。当你点击这个过滤器的时候,你会发现刚才在onCreate()方法里打印的日志没了,这是因为data这个过滤器只会显示tag名称为data的日志。你可以尝试在onCreate()方法中把打印日志的语句改成Log.d("data", "onCreate execute"),然后再次运行程序,你就会在data过滤器下看到这行日志了。
不知道你有没有体会到使用过滤器的好处,可能现在还没有吧。不过当你的程序打印出成百上千行日志的时候,你就会迫切地需要过滤器了。
看完了过滤器,再来看一下logcat中的日志级别控制吧。logcat中主要有5个级别,分别对应着上一节介绍的5个方法,如图1.34所示。
当前我们选中的级别是verbose,也就是最低等级。这意味着不管我们使用哪一个方法打印日志,这条日志都一定会显示出来。而如果我们将级别选中为debug,这时只有我们使用debug及以上级别方法打印的日志才会显示出来,以此类推。你可以做一下试验,当你把logcat中的级别选中为info、warn或者error时,我们在onCreate()方法中打印的语句是不会显示的,因为我们打印日志时使用的是Log.d()方法。
日志级别控制的好处就是,你可以很快地找到你所关心的那些日志。相信如果让你从上千行日志中查找一条崩溃信息,你一定会抓狂的吧。而现在你只需要将日志级别选中为error,那些不相干的琐碎信息就不会再干扰你的视线了。
最后我们再来看一下关键字过滤。如果使用过滤器加日志级别控制还是不能锁定到你想查看的日志内容的话,那么还可以通过关键字进行进一步的过滤,如图1.35所示。
我们可以在输入框里输入关键字的内容,这样只有符合关键字条件的日志才会显示出来,从而能够快速定位到任何你想查看的日志。另外还有一点需要注意,关键字过滤是支持正则表达式的,有了这个特性,我们就可以构建出更加丰富的过滤条件。
 

Android util.Log 工具类的更多相关文章

  1. Android开发中有用工具之--Log工具类

    在开发的过程中.我们常常会使用Log来输出日志,帮助我们来调试程序 可是有时候并不能全然满足我们的须要 ,比方我想知道这个日志信息是来自于哪一个包 哪一个类 所以我们封装一个这个Log类.方便我们的使 ...

  2. Android Log工具类

    import java.text.SimpleDateFormat; import java.util.Date; import android.util.Log; public class LogU ...

  3. android 开发 常用工具类

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自[张鸿洋的博客] 打开大家手上的项目,基本都会有一大批的辅 ...

  4. Android.util.Log 关于Android开发中打印log

    日常Android开发真机调试过程经常会遇到系统日志过多过快,想看的内容一闪而过的问题.而自定义些log可以很好的解决这些问题.   代码中添加 log  androidsdk中提供了log输出的ap ...

  5. (转载)实例详解Android快速开发工具类总结

    实例详解Android快速开发工具类总结 作者:LiJinlun 字体:[增加 减小] 类型:转载 时间:2016-01-24我要评论 这篇文章主要介绍了实例详解Android快速开发工具类总结的相关 ...

  6. 一个使用命令行编译Android项目的工具类

    一个使用命令行编译Android项目的工具类 简单介绍 编译apk项目须要使用的几个工具,基本都在sdk中,它们各自是(Windows系统): 1.aapt.exe 资源打包工具 2.android. ...

  7. android.util.Log说明和android 像素说明

    1. android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() .根据首字母对应VERBOSE,DEBUG,INFO, ...

  8. android.util.Log常用方法

    android.util.Log常用的方法有以下5个: Log.v() Log.d() Log.i() Log.w() 以及 Log.e() .根据首字母分别对应VERBOSE,DEBUG,INFO, ...

  9. Android 软件管理工具类Utils

    Android 软件管理工具类Utils /** * Created by uilubo on 2015/9/30. * 工具类 */ public class Utils { public stat ...

随机推荐

  1. 10 - JavaSE之网络编程

    网络编程 网络通信协议分层思想 为什么要分层呢?因为整个网络协议非常复杂,要涉及到方方面面的知识,而且还有对底层硬件的操作,利用分层的思想,我们可以将复杂的通信协议分割成一层层的形式,上一层可以调用下 ...

  2. CVE-2017-8464复现 (远程快捷方式漏洞)

    我们的攻击机IP是192.168.222.133 目标机IP是192.168.222.132 我们首先生成一个powershell msfvenom -p windows/x64/meterprete ...

  3. 对SVD奇异值分解的理解

      首先推荐一篇博客,奇异值分解(SVD)原理详解及推导 - CSDN博客,讲解的很清楚.这里我谈谈自己的理解,方便以后回顾.   如果把向量理解为空间中的一个元素,那么矩阵可以理解为两个空间上的映射 ...

  4. Spider_Man_3 の selenium

    一:介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 selenium本质是通过驱动浏览器,完全模拟浏览器的操作, ...

  5. error: Failed dependencies:解决

    error: Failed dependencies:解决 使用rpma安装安装包时,会出现 error: Failed dependencies: 意思是 失败的依赖 解决方法: 在安装包后面加两个 ...

  6. oracle设置自动增长序列

    我们在用MS SQL Server时,可以为表的主键设置为自动加1的效果;但是在Oracle当中,我们是无法直接设置一个字段为自动加1,需要先建立一个Sequence,然后为这个表创建一个Trigge ...

  7. 访问网时出现403 Forbidden错误的原因:

    1.你的IP被列入黑名单.2.你在一定时间内过多地访问此网站(一般是用采集程序),被防火墙拒绝访问了.3.网站域名解析到了空间,但空间未绑定此域名.4.你的网页脚本文件在当前目录下没有执行权限.5.在 ...

  8. 这个时间格式2017-09-26-T04:00:00Z php识别不出来

    这应该不对吧 这是什么格式?看起来不标准,一般不都是传 2017-09-26 04:00:00 这种吗?不行用正则筛吧.echo date('Y-m-d H:i:s',date_create_from ...

  9. 什么是A记录  域名

    A (Address) 记录是用来指定主机名(或域名)对应的IP地址记录.用户可以将该域名下的网站服务器指向到自己的web server,FTP server等上面.同时也可以设置域名的子域名. 通俗 ...

  10. [知了堂学习笔记]_css3特效第二篇--行走的线条&&置顶导航栏

    一.行走的线条. 效果图(加载可能会慢一点儿,请稍等...): html代码: <div class="movingLines"> <img src=" ...