Android Studio中的日志输出

时间:2024-03-21 09:55:08

在程序开发过程中,我们经常需要输出某些值,通常我们可以通过system.out.println等相关的方法输出,例如下面的代码

Button logButton = findViewById(R.id.logButton);

logButton.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View view) {

        System.out.println("println输入日志信息");

    }

});

输出结果如下图所示:

Android Studio中的日志输出

       我们可以在Android Studio提供Logcat查看输出的结果。

其实在Android API中,提供了一个日志工具类android.util.Log,通过这个类我们可以以不同的级别输出日志,Android的Log等级通常有六类,按照日志级别由低到高分别是Verbose、Debug、Info、Warning、Error、Assert。

日志的级别及输出方法如下表所示:

级别

输出方法

Verbose

Log.v

Debug

Log.d

Info

Log.i

Warn

Log.w

Error

Log.e

Assert

Log.wtf

       注:Verbose这个单词的含义是冗长的啰嗦的。

这些方法通常有两个重载的版本,如下所示:

static int  v(String tag, String msg)

static int  v(String tag, String msg, Throwable tr)

       下面给出一个样例代码:

Log.v("MainActivity","Log.v输入日志信息");

输出结果如下图所示:

Android Studio中的日志输出

我们可以Logcat在Logcat中对日志进行过滤,如下图所示:

Android Studio中的日志输出

此外,我们还可以通过Android studio中File菜单下的Settings,设置不同级别Log的颜色,如下图所示:

Android Studio中的日志输出

       注意:设置时,请先取消Inherit values from的复选。

下面我来研究一下如何控制日志的输出。

通常我们希望只有在调试的时候输出日志,正式发布时,不输出日志信息,这样能够保证系统的安全性。我们可以借助gradle的变量定义来完成这个功能。

首先我们在app的build.gradle的debug和release中分别定义变量SHOW_LOG,并设置不同的值,如下图所示:

Android Studio中的日志输出

这样我们就可以通过BuildConfig.SHOW_LOG获取变量值,控制日志的输出,代码如下:

Button logButton = findViewById(R.id.logButton);

logButton.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View view) {

        if(BuildConfig.SHOW_LOG){

            Log.v("MainActivity","Log.v输入日志信息");

        }

    }

});

关于gradle的知识,后面我们还会详细讲解,这里要说明的是,代码中导出充斥着这样的判断,将会是代码很难维护,通常情况下我们会顶一个工具类,完成日志的输出。

Log有个比较糟糕的地方在于只能输出字符串,功能相对比较弱鸡。我们可以采用第三方的类库完成日志输入,比如说com.orhanobut:logger。

我们可以通过Project Structure引入com.orhanobut:logger,如下图所示:

Android Studio中的日志输出

也可以直接在gralde加入引用,引用成功后,我可以可以使用Logger输出日志,代码如下所示:

Button logButton = findViewById(R.id.logButton);

logButton.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View view) {

        if(BuildConfig.SHOW_LOG){

          Logger.addLogAdapter(new AndroidLogAdapter());  // 初始化Logger

          Logger.d("debug");

          Logger.e("error");

          Logger.w("warning");

          Logger.v("verbose");

          Logger.i("information");

          Logger.wtf("wtf!!!!");

        }

    }

});

输出如下图所示:

Android Studio中的日志输出

关于com.orhanobut:logger更详细的介绍,同学们可以自行在百度搜索学习。

(张伟:2018年9月13日)

(转载时请注明来源)