使用log而不使用System.out

最初学java的目的就是为了学安卓平台的开发,而学习安卓开发的最初缘由就是我想学习移动端的逆向。

本文摘录于《第一行代码》,有所删改

很多java新手都非常喜欢使用 System.out.println() 方法来打印日志。不过在真正的项目开发中,是极度不建议使用 System.out.println() 方法的!

System.out.println() 的缺点:

  • Android Studio不支持通过输入syso来补全 System.out.println()
  • 日志打印不可控制、打印时间无法确定、不能添加过滤器、日志没有级别区分······

Andoid 的日志工具 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 高一级。

疑问:前面这3个还能理解,我可以通过 Log 来打印我想看到的东西,或者来调试。但是后面两个我不是很能理解,打印警告信息和错误信息,我都知道有错误了为什么还要单独写一个语句去打印出来?难道这个是出现问题的时候调试器自动加上的?这好像也有点问题吧。。。没事才第一天看安卓呢,这坑以后再填

示例

打开 MainActivity.java,定位到 onCreate(),在 onCreate() 方法外面输入 logt + TAB,就可以得到当前类名的一个字符串。

在 onCreate() 方法内的最后输入 log.d +TAB,就可以快捷地得到一条 debug 级别的打印语句。

在第二个参数中加入想要打印的具体内容,代码如下:

import android.util.Log;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "onCreate: execute");
    }
}

Log.d() 方法中传入了两个参数:第一个参数是 tag,一般传入当前的类名就好,如果用log.d+补全,就会自动生成一个TAG常量;第二个参数是msg,即想要打印的具体内容。

运行程序,在IDE下方的logcat窗口中搜索就能看到了

其实本来也不想Java还啥都不知道就去看安卓,没办法还得跟上学校安卓应用开发公选课的步伐。不过好在那课目前上得极慢,所以先无所谓了。

说点什么

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒