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

在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。我们这样就干了一个一劳永逸的事了。

Android教程-02 在程序中输出Log的更多相关文章

  1. 在 ASP.NET MVC Web 应用程序中输出 RSS Feeds

    RSS全称Really Simple Syndication.一些更新频率较高的网站可以通过RSS让订阅者快速获取更新信息.RSS文档需遵守XML规范的,其中必需包含标题.链接.描述信息,还可以包含发 ...

  2. ZT Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性

    Android布局]在程序中设置android:gravity 和 android:layout_Gravity属性 分类: [Android基础] 2011-04-19 16:06 54739人阅读 ...

  3. java程序中输出console的日志到文本

    http://blog.sina.com.cn/s/blog_76a8411a01010u2h.html 首先:当我们引入data-integration\lib文件夹下的所有jar包后 运行java ...

  4. CocoStudio基础教程(3)在程序中处理cocoStudio导出动画

    1.概述 使用cocoStudio可以方便的制作动画,接下来的工作就是在我们的程序中使用制作的动画.这篇中,我将使用程序将两个动画连接起来 2.关联到项目 运行脚本创建我们的项目,将导出的动画.UI放 ...

  5. 【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性

    在进行UI布局的时候,可能常常会用到 android:gravity  和 android:layout_Gravity 这两个属性. 关于这两个属性的差别,网上已经有许多人进行了说明,这边再简单说一 ...

  6. 【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性——位置设置偏向

    LinearLayout有两个非常相似的属性: android:gravity与android:layout_gravity. 他们的区别在于: android:gravity 属性是对该view中内 ...

  7. 我的手机华为荣耀7,运行android程序不输出Log

    解决方法:1 进入手机拨号界面2 输入*#*#2846579#*#*3 输入完毕后自动跳转到<工程菜单>界面4 依次选择后台设置-->LOG设置-->在此可以看见一些列关于LO ...

  8. Android:调用其他程序中的activity和Permission Denial: starting Intent 错误解决办法

    今天想调试多个task中栈的情况,在测试程序中调用另一个程序的activity, 代码片段如下: btnStartX=(Button)findViewById(R.id.btnStartX); btn ...

  9. 程序中编写log日志

    public string logFile; ; private Stream s = null; StreamWriter sw = null; /// <summary> /// 用l ...

随机推荐

  1. linux设置变量的三种方法

    1在/etc/profile文件中添加变量对所有用户生效(永久的) 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久生效”. 例如:编辑/etc/ ...

  2. IIS 配置问题

    1 IIS错误需要重新运行配置 重新注册.netframework. 解决方式:cmd   C:\Windows\Microsoft.NET\Framework\v4.0.30319 aspnet_r ...

  3. Faster RCNN算法训练代码解析(1)

    这周看完faster-rcnn后,应该对其源码进行一个解析,以便后面的使用. 那首先直接先主函数出发py-faster-rcnn/tools/train_faster_rcnn_alt_opt.py ...

  4. mac 下的 homebrew

    如果安装了macport 就不能安装homebrew ,必须先卸载macport $ sudo port -f uninstall installed$ sudo rm -rf \/opt/local ...

  5. 快速排序的一种实现(Mark Allen 数据结构与算法 c语言版)

    之前关于快速排序一直比较模糊,网上有几种常见写法: 方法一: void quickSort(int s[], int l, int r) { if (l< r) { int i = l, j = ...

  6. [java]java构造器 标签: java面向对象 2017-06-11 11:16 195人阅读 评论(12)

    构造器这个概念,各种语言都有出现,虽然为了考试或者其他学了好多遍,但是自己一直不能理解这个概念,前几天又学了一遍,突然就明白了,下面随小编来一起学习一下吧. 什么是构造器? 在类别基础的面向对象程序设 ...

  7. Xdebug步骤

    谷歌浏览器安装xdebug cd  /etc/php/7.2/fpm/conf.d 重启sudo service php7.1-fpm restart   (注意 php版本) 重启编辑器

  8. word Stock Market Indices

    Stock Market Indices USA Africa Asia and Pacific Canada Europe Middle East South America Internation ...

  9. shops

    #!/usr/bin/env python #coding:utf- import urllib2,sys,re,os,string reload(sys); sys.setdefaultencodi ...

  10. URL编程

    package com.tanlei.URL; import java.io.File; import java.io.FileOutputStream; import java.io.IOExcep ...