Android中如何关闭Log

2014-04-23 08:25

android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSE,

DEBUG,INFO, WARN,ERROR。

1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");

2、Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.

3、Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息

4、Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息

5、Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。


      开发过程中在程序中有打了很多的log,以方便调试程序,当初项目组内每个人打log的方式也没有统一。项目结项正式发布程序时需要关闭log,删掉肯定不行,统一修改也挺麻烦的。今天在网上搜索了一下,找到了三种方法:

方法一:

在Application中设置一个全局的标记,例如:public static final boolean DEBUG=true;

if(DEBUG){  

  Log.d(LOG_TAG, "Something");

}

需要关闭log时,只需将DEBUG的值改为false。

该方法的缺点为:每次打log都需要添加if进行判断。


方法二:

在proguard.cfg文件中加入

-assumenosideeffects class android.util.Log {  

    public static *** d(...);  

    public static *** v(...);  



方法三:

自动写一个日志类,以取代android.util.Log类:

import android.content.Context;

import android.util.Log;

import android.widget.Toast;


public class DebugUtil {

    public static final boolean DEBUG = true;

     

    public static void toast(Context context,String content){

        Toast.makeText(context, content, Toast.LENGTH_SHORT).show();

    }

    

    public static void v(String tag,String msg){

        if(DEBUG){

            Log.v(tag, msg);

        }

    }

     

    public static void d(String tag,String msg){

        if(DEBUG){

            Log.d(tag, msg);

        }

    }

    

    public static void i(String tag,String msg){

        if(DEBUG){

            Log.i(tag, msg);

        }

    }

    

    public static void w(String tag,String msg){

        if(DEBUG){

            Log.w(tag, msg);

        }

    }

    

    public static void e(String tag,String msg){

        if(DEBUG){

            Log.e(tag, msg);

        }

    }    

}

需要import该类,使用的时候将以往的Log.d(**,**)变为DebugUtil.d(**,**)即可。

将DEBUG的值设为false时可以关闭所有log,假如需要开启w和e级别的log,只需将DebugUtil类对应w和e方法中的if语句去掉。

^