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语句去掉。