首页 > 系统 > Android > 正文

超实用的android自定义log日志输出工具类

2019-10-21 21:26:41
字体:
来源:转载
供稿:网友

android自定义log日志输出工具,该工具类具有以下优点:

1 在LogUtlis方法的第一个参数中填this可以输出当前类的名称,特别是在匿名内部类使用也可以输出当前类名。 
如 : LogUtils.i(this,”这是一个实用的日志工具类”) 或 LogUtils.i(类名.class,”这是一个实用的日志工具类”)。 
效果:比如我在MainActivity中直接LogUtils.i(this,”logTest”),配合自己喜欢的标志,结果可输出为 
“zhang———-MainActivity :logTest“,方便调试和看log。 

2 可以配合androidStudio中build文件中自定义变量来控制不同版本log的是否输出。

使用步骤:

1 在app目录下的build.gradle中定义变量名称,写完make或build下工程。

 /**  *  release 下的buildConfigField 为false会屏蔽掉log输出  */  buildTypes {    release {      minifyEnabled false      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'      buildConfigField "boolean","LOG_DEBUG","true"    }    debug{      minifyEnabled false      buildConfigField "boolean","LOG_DEBUG","true"      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'    }  }

2 在应用的application中的onCreate方法中这样定义

/** *  BuildConfig.LOG_DEBUG 获取build.gradle中的自定义的log控制变量 */    if (BuildConfig.LOG_DEBUG) {      LogUtils.isShowLog = true;    } else {      LogUtils.isShowLog = false;    }

LogUtils

 

/** *  @创建者   zsh *  @创建时间  2017/1/17 10:23 *  @描述    ${log控制的工具类} *   *  @更新者   $Author *  @更新时间  $Date *  @更新描述  ${TODO} */public class LogUtils {  /** Log输出的控制开关 */  public static boolean isShowLog = true;  /** 开发者自己定义,我是用自己的姓来log的 */  public static final String selfFlag = "zhang---------";  public static void i(Object objTag, String msg) {    if (!isShowLog) {      return;    }    String tag;    // 如果objTag是String,则直接使用    // 如果objTag不是String,则使用它的类名    // 如果在匿名内部类,写this的话是识别不了该类,所以获取当前对象全类名来分隔    if (objTag instanceof String) {      tag = (String) objTag;    } else if (objTag instanceof Class) {      tag = ((Class) objTag).getSimpleName();    } else {      tag = objTag.getClass().getName();      String[] split = tag.split("//.");      tag=split[split.length-1].split("//$")[0];    }    if (TextUtils.isEmpty(msg)) {      Log.i(selfFlag.concat(tag), "该log输出信息为空");    } else {      Log.i(selfFlag.concat(tag), msg);    }  }  /**   * 错误调试信息   * @param objTag   * @param msg   */  public static void e(Object objTag, String msg) {    if (!isShowLog) {      return;    }    String tag;    if (objTag instanceof String) {      tag = (String) objTag;    } else if (objTag instanceof Class) {      tag = ((Class) objTag).getSimpleName();    } else {      tag = objTag.getClass().getName();      String[] split = tag.split("//.");      tag=split[split.length-1].split("//$")[0];    }    if (TextUtils.isEmpty(msg)) {      Log.e(selfFlag.concat(tag), "该log输出信息为空");    } else {      Log.e(selfFlag.concat(tag), msg);    }  }  /**   * 详细输出调试   * @param objTag   * @param msg   */  public static void v(Object objTag, String msg) {    if (!isShowLog) {      return;    }    String tag;    if (objTag instanceof String) {      tag = (String) objTag;    } else if (objTag instanceof Class) {      tag = ((Class) objTag).getSimpleName();    } else {      tag = objTag.getClass().getName();      String[] split = tag.split("//.");      tag=split[split.length-1].split("//$")[0];    }    if (TextUtils.isEmpty(msg)) {      Log.v(selfFlag.concat(tag), "该log输出信息为空");    } else {      Log.v(selfFlag.concat(tag), msg);    }  }  /**   * 警告的调试信息   * @param objTag   * @param msg   */  public static void w(Object objTag, String msg) {    if (!isShowLog) {      return;    }    String tag;    if (objTag instanceof String) {      tag = (String) objTag;    } else if (objTag instanceof Class) {      tag = ((Class) objTag).getSimpleName();    } else {      tag = objTag.getClass().getName();      String[] split = tag.split("//.");      tag=split[split.length-1].split("//$")[0];    }    if (TextUtils.isEmpty(msg)) {      Log.w(selfFlag.concat(tag), "该log输出信息为空");    } else {      Log.w(selfFlag.concat(tag), msg);    }  }  /**   * debug输出调试   * @param objTag   * @param msg   */  public static void d(Object objTag, String msg) {    if (!isShowLog) {      return;    }    String tag;    if (objTag instanceof String) {      tag = (String) objTag;    } else if (objTag instanceof Class) {      tag = ((Class) objTag).getSimpleName();    } else {      tag = objTag.getClass().getName();      String[] split = tag.split("//.");      tag=split[split.length-1].split("//$")[0];    }    if (TextUtils.isEmpty(msg)) {      Log.d(selfFlag.concat(tag), "该log输出信息为空");    } else {      Log.d(selfFlag.concat(tag), msg);    }  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表