Android教程-02 在程序中输出Log

视频教程,建议采用超清模式观看



在Android中一般都用Log输出日志,常见的有5个不同的级别

  • Log.v()
  • Log.d()
  • Log.i()
  • Log.w()
  • Log.e()
当然很多程序员还比较习惯用System.out.println() 去输出日志,这种方式其实没有任何优势可言。建议大家放弃。

输出日志很简单,怎么控制日志的输出就值得研究下了,日志是用来调试程序的,当程序发布的时候日志就变得一无是处了。所以输出日志的原则就是:
程序开发阶段允许输出日志,发布阶段不允许打印日志。
如何去控制呢?如果你在上线前手动的删除所有日志,这个工作量就是很大了,一般情况下我们都是创建一个LogUtils工具类
public class LogUtils {
    public static final boolean DEBUG=true;

    public static void i(String tag,String msg){
        if(DEBUG) {
            Log.i(tag, msg);
        }
    }
}

用LogUtils中的方法去输出日志
 LogUtils.i("MainActivity","info");
这样我们就可以通过LogUtils中DEBUG变量去控制日志的输出,当程序调试的时候我们把这个值改为true,程序发布了,就把这个值改成false。这样就可以实现我们一开始的需求。

然而,这样的话,我们还需要在发布前夕手动的去改代码,能不能在发布前不改代码呢?这时候我们就要借助Gradle了,Android Studio集成了Gradle,这一点非常棒.我们需要打开app/build.gradle这个文件,做一个配置
    buildTypes {
        debug{ //  开发阶段
            buildConfigField "String", "API_URL","\"http://test.example.com/api\"" //定义了字符串变量
            buildConfigField "boolean", "LOG_CALLS", "true"   //  定义了boolean变量 true

        }
        release { // 发布了
            buildConfigField "boolean", "LOG_CALLS", "false"
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
我们可以在buildType中配置一些全局变量,可以是String类型如“API_URL”,也可以是boolean,这里我们用到的就是LOG_CALLS这一个变量,注意一点debug{ ...} 这个指的是程序开发阶段,release{ } 指的是程序发布阶段。我们在开发和发布阶段分别定义了对应不同值的LOG_CALLS,接下来我们就可以在LogUtils中使用这个全局变量了。
public class LogUtils {
    public static final boolean DEBUG=BuildConfig.LOG_CALLS;

    public static void i(String tag,String msg){
        if(DEBUG) {
            Log.i(tag, msg);
        }
    }
}
其中BuildConfig.LOG_CALLS就是我们在上面定义的变量,这个变量在开发阶段是true,发布阶段自动的就变成了false。我们这样就干了一个一劳永逸的事了。

posted on 2015-09-21 17:19  如果蜗牛有爱情  阅读(276)  评论(0编辑  收藏  举报

导航