1、使用 Android 的日志工具 Log
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 项目中试一试日志工具好不好用,打开 MainActivity,在 onCreate() 方法中添加一行打印日志的语句,如下所示:- class MainActivity : AppCompatActivity() {
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- Log.d("MainActivity", "onCreate execute")
- }
- }
复制代码 Log.d() 方法中传入了两个参数:第一个参数是 tag,一般传入当前的类名就好,主要用于对打印信息进行过滤;第二个参数是 msg,即想要打印的具体内容。
重新运行一下 HelloWorld 项目,点击顶部工具栏上的运行按钮,或者使用快捷键 Shift + F10(Mac系统是Control + R)。等程序运行完毕,点击 Android Studio 底部工具栏的“Android Monitor”,在 Logcat 中就可以看到打印信息。
其中,不仅可以看到打印日志的内容和 tag 名,就连程序的包名、打印的时间以及应用程序的进程号都可以看到。当然,Logcat 中不光会显示我们所打印的日志,还会显示许多其他程序打印的日志,因此在很多情况下还需要对日志进行过滤。
2、为什么使用 Log 而不使用 println()?
相信很多的 Java 新手会非常喜欢使用 System.out.println() 方法来打印日志,在 Kotlin 中与之对应的是 println() 方法,不知道你是不是也喜欢这么做。不过在真正的项目开发中,是极度不建议使用 System.out.println() 或 println() 方法的,如果你在公司的项目中经常使用这两个方法来打印日志的话,就很有可能要挨骂了。
为什么 System.out.println() 和 println() 方法会这么不受待见呢?
仔细分析会发现这两个方法除了使用方便一点之外,其他就一无是处了。方便在哪儿呢?在 Android Studio 中你只需要输入“sout”,然后按下代码提示键,方法就会自动出来了,相信这也是很多 Java 新手对它钟情的原因。那缺点又在哪儿了呢?这个就太多了,比如日志开关不可控制、不能添加日志标签、日志没有级别区分……
Log 虽然没有把上面所说的缺点全部改好,但 Log 已经做得相当不错了,现在看看 Log 和 Logcat 配合的强大之处。
首先,Logcat 中可以很轻松地添加过滤器,可以点击下图中的过滤图标,查看最近使用过的过滤条件。
目前只有4个过滤器,level:warn 表示只显示指定级别的日志,这里指定的日志级别是 warn; package:mine 表示只显示指定包名的日志,这里指定的包名是 mine;tag:MainActivity 表示只显示指定 tag 名称的日志,这里指定的 tag 为 MainActivity;MainActivity 表示只显示包含指定字符串的日志,这里指定的字符串是 MainActivity。
除此以外,message:MainActivity 表示只显示消息中包含指定字符串的日志,这里指定的字符串是 MainActivity。
可以同时指定多个过滤条件,使用空格分隔。
现在来添加日志试试,在 onCreate() 方法中添加打印日志的语句:Log.d("data", "onCreate execute"),再次运行程序,在 data 过滤器下看到这行日志了。
Logcat 中主要有5个级别,分别对应上一小节介绍的5个方法。新版本的 Logcat 增加了 level:assert,用于显示断言信息。
按日志级别进行过滤 :
✎ level:verbose :显示所有日志。
✎ level:debug :显示调试日志。
✎ level:info :显示一般信息。
✎ level:warn :显示警告日志。
✎ level:error :显示错误日志。
✎ level:assert :显示断言信息。
如果当前选中的级别是 Verbose,也就是最低等级。这意味着不管使用哪一个方法打印日志,这条日志都一定会显示出来。而如果将级别选中为 Debug,这时只有我们使用 Debug 及以上级别方法打印的日志才会显示出来,以此类推。当把 Logcat 中的级别选中为 Info、Warn 或者 Error 时,在 onCreate() 方法中打印的语句是不会显示的,因为打印日志时使用的是 Log.d() 方法。
日志级别控制的好处是可以很快地找到关心的那些日志。可以在输入框里输入关键字的内容,这样只有符合关键字条件的日志才会显示出来,从而能够快速定位到任何你想查看的日志。
关键字过滤是支持正则表达式的,有这个特性,就可以构建出更加丰富的过滤条件。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |