Android–掌握日志工具的使用

我相信很多java新手都非常喜欢使用System.out.println()方法来打印日志,不过在真正的项目中是极度不建议使用该方法的。因为这种方法缺点太多了,比如日志打印不可控制、打印时间无法确定、不能添加过滤器等等。掌握日志工具的使用,对开发有极大的帮助,下面就开始介绍一下日志工具的使用。

Android中的日志工具类是Log(android.util.Log),这个类中提供了如下如下五个方法:

  • Log.v() 用于打印意义比较小的消息,对应级别verbose
  • Log.d()用于打印一些调试消息,一些对你调试程序和分析问题有帮助的消息。对应级别debug,比verbose高一级
  • Log.i() 用于打印一些比较重要的数据。对应级别info,比debug高一级
  • Log.w() 用于打印一些警告消息。对应级别warn,比info高一级
  • Log.e() 用于打印程序中的错误信息,比如程序进入到了catch语句中。对应级别error,比warn高一级

现在建一个新的Android程序,来试试日志工具的使用。

1、打开MainActivity,在onCreate()方法中添加一行打印日志的语句,如下所示:

private static final String TAG = "MainActivity";
   @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

       Log.d(TAG,"onCreate execute"); 
}

Log.d()方法中传入了两个参数:第一个参数是tag,主要用于日志过滤;第二个参数是msg,就是日志内容。

运行程序,点击底部Android Monitr,在logcat中就可以看到打印消息了,如下所示:

android 日志按天 android日志输出工具_日志工具

2、logcat中可以很轻松的添加过滤器,点击Edit Filter Configuration就是配置过滤器,下图是过滤器配置界面,你可以根据tag、massage等进行过滤。

android 日志按天 android日志输出工具_java_02

如果你感觉不到过滤器带给你的好处,那当你的程序打印出成百上千行日志的时候,你就会迫切需要过滤器了。

3、我们还可以自己编写一个日志工具类来自由的控制日志的打印,让日志工具更加符合自己的需求。下面给出一个例子:

public class LogUtil {
    public static final int VERBOSE = 1;
    public static final int DEBUG = 2;
    public static final int INFO = 3;
    public static final int WARN = 4;
    public static final int ERROR = 5;
    public static final int NOTHING = 6;
    public static final int level = VERBOSE;

    public static void v(String tag,String msg){
        if (level<=VERBOSE)
            Log.v(tag,msg);
    }
    public static void d(String tag,String msg){
        if (level<=DEBUG)
            Log.d(tag,msg);
    }
    public static void i(String tag,String msg){
        if (level<=INFO)
            Log.i(tag,msg);
    }
    public static void w(String tag,String msg){
        if (level<=WARN)
            Log.w(tag,msg);
    }
    public static void e(String tag,String msg){
        if (level<=VERBOSE)
            Log.e(tag,msg);
    }
}

可以看到上面LogUtil定义了5个常量分别对应日志5个级别,然后有一个level静态变量,还提供了5个自定义的日志方法。很容易可以看出,利用这个util类我们只要修改level的值,就可以达到控制日志打印的效果。(level=VERVOSE打印所有级别的日志,level=WARN打印warn级别以上日志,level=NOTHING不打印任何日志)

这个时候你可以有疑问,为什么要自定义日志工具类呢?打个比方,你正在编写一个比较庞大的项目,期间为了调试方便,在代码很多地方都打印了大量的日志。最近项目完成了,正式上线后会有一个让人头疼的问题,就是之前用于调试的那些日志照常打印,这样不仅会降低程序的运行效率,还有可能泄露机密数据。这个时候,如果我们使用的是自定义类,那在上线后,让程序只打印warn级别以上日志,就可以避免上面的问题发生。

好了,日志工具的运用就讲到这里,希望对你有帮助!!!