做Android开发的一个重要的工具就是locat,这是代码调试,出错排除定位等必不可少的工具,也是习以为常的,

首先我就来先说一下log吧。

它属于android.util.log类。常用的打印日志的方法有5个如下

     Log.v(tag,message) ;   //verbose模式,打印最详细的信息

     Log.d(tag,message) ;   //debug模式,打印调试的信息

     Log.i(tag,message) ;    //info  

     Log.w(tag,message) ;   //warning  ,打印警告的信息

     Log.e(tag,message) ;   //error ,打印错误信息

 其中 tag 为调试信息标签名称,也就是logcat的过滤标签,

 message也就是调试的时候打印的信息,

 

输出信息级别 error> warn > info >debug> verbose(可作为筛选信息的参考)。

 

好了介绍完这些,那么问题来了(^_^)

每次想调试都要写一句什么 Log.v("tag","调试....");然后再过滤 tag,要是一个应用那么多的类这样每次都写着一句话会不会很烦?同时应用发布的时候要一句一句的隐藏掉这些log,更烦。

 那么 我们可以考虑这么写:

 直接写一个Log工具类:

public class MyLog {
 static boolean state = true;// 如果要发布应用,直接改掉 state =false就不会有日志输出。
 public static void d( String str){
   if(state){
    Log.i("n你的应用名称:" , str);
   }
 }

}

那么这样的话每次调用MyLog.d(String str)方法就可以了,同时一个应用在Logcat的过滤器里之写一个Tag 然后你的应用的整个log都会出来,是不是方便很多,而且调试模式的时候state改为true,就会有日志,发布的时候改为false所有日志就会隐藏,会不会方便很多。

 

如果说这样分辨不清楚是一个应用中哪个类的日志,那么有更好的方法:

public class MyLog {
     
    /**
     * 是否开启debug
     */
    public static boolean isDebug=true;
     
      public static void d(Class<?> clazz,String msg){
        if(isDebug){
            Log.e(clazz.getSimpleName(),msg+"");
        }
    }

}

这个类比上面的那个更加好用,学过java的人都知道 clazz.getSimpleName()的作用是得到类的简体名称。那么这也更方便的区分了是哪个类的日志,更方便更清晰。

好了,到这里就应该结束了,本来log就是很简单的东西,我这里罗里吧嗦的说了这么多,其实也就是说写代码我们必须要种能省就省,内存能省就省,在看得懂的前提下代码量能省就省,,做一个环保的程序猿。