Android自定义Log打印

2017-03-31  本文已影响0人  seawaveai

## 实现超好用的Log打印功能 ##

### 说明:

1.在LogUtlis方法的第一个参数中填this可以输出当前类的名称,特别是在匿名内部类使用也可以输出当前类名.

2.结合logcat的筛选功能,可以实现只看某个级别的log日志.

[ 只想看info级别的日志? 就可以使mDebuggable=3,Log输出控制台调到info级别筛选 ]

### 使用步骤:

1.拷贝LogUtils类到项目中

2.自定义快捷键,如: LogUtils.i(this, "$msg$");

自己定义的快捷键

### 代码截图:

类和字段 这是v级别的方法

### 全部的代码如下:

public class LogUtils {

  /**

* @desc 允许输出log的级别(0代表不输出, 5代表输出所有的日志; 1就是输出v, 2就是输出v和d, 3就是输出v, d, i ...)

*/

private static int mDebuggable = 5;

/**

* 日志输出级别V

*/

public static final int LEVEL_VERBOSE = 1;

/**

* 日志输出级别D

*/

public static final int LEVEL_DEBUG   = 2;

/**

* 日志输出级别I

*/

public static final int LEVEL_INFO    = 3;

/**

* 日志输出级别W

*/

public static final int LEVEL_WARN    = 4;

/**

* 日志输出级别E

*/

public static final int LEVEL_ERROR   = 5;

/**---------------日志输出, begin---------------**/

/**

* 以级别为 v 的形式输出LOG

*/

public static void v(Object objTag, String msg) {

if (mDebuggable >= LEVEL_VERBOSE) {

String tag;

// 如果objTag是String,则直接使用;如果objTag不是String,则使用它的类名

if (objTag instanceof String) {

tag = (String) objTag;

} else if (objTag instanceof Class) {

tag = ((Class) objTag).getSimpleName();

} else {

//处理在匿名内部类中写this显示不出类名的问题

tag = objTag.getClass().getName();

String[] split = tag.split("\\.");

tag = split[split.length - 1].split("\\$")[0];

}

if (TextUtils.isEmpty(tag)) {//处理当objTag为null的情况

tag = "该Tag为空";

}

if (TextUtils.isEmpty(msg)) {

Log.v(tag, "该log输出信息为空");

} else {

Log.v(tag, msg);

}

}

}

/**

* 以级别为 d 的形式输出LOG

*/

public static void d(Object objTag, String msg) {

if (mDebuggable >= LEVEL_DEBUG) {

String tag;

// 如果objTag是String,则直接使用;如果objTag不是String,则使用它的类名

if (objTag instanceof String) {

tag = (String) objTag;

} else if (objTag instanceof Class) {

tag = ((Class) objTag).getSimpleName();

} else {

//处理在匿名内部类中写this显示不出类名的问题

tag = objTag.getClass().getName();

String[] split = tag.split("\\.");

tag = split[split.length - 1].split("\\$")[0];

}

if (TextUtils.isEmpty(tag)) {

tag = "该Tag为空";

}

if (TextUtils.isEmpty(msg)) {

Log.d(tag, "该log输出信息为空");

} else {

Log.d(tag, msg);

}

}

}

/**

* 以级别为 i 的形式输出LOG

*/

public static void i(Object objTag, String msg) {

if (mDebuggable >= LEVEL_INFO) {

String tag;

// 如果objTag是String,则直接使用

// 如果objTag不是String,则使用它的类名

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(tag)) {

tag = "该Tag为空";

}

if (TextUtils.isEmpty(msg)) {

Log.i(tag, "该log输出信息为空");

} else {

Log.i(tag, msg);

}

}

}

/**

* 以级别为 w 的形式输出LOG

*/

public static void w(Object objTag, String msg) {

if (mDebuggable >= LEVEL_WARN) {

String tag;

// 如果objTag是String,则直接使用

// 如果objTag不是String,则使用它的类名

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(tag)) {

tag = "该Tag为空";

}

if (TextUtils.isEmpty(msg)) {

Log.w(tag, "该log输出信息为空");

} else {

Log.w(tag, msg);

}

}

}

/**

* 以级别为 e 的形式输出LOG

*/

public static void e(Object objTag, String msg) {

if (mDebuggable >= LEVEL_ERROR) {

String tag;

// 如果objTag是String,则直接使用

// 如果objTag不是String,则使用它的类名

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(tag)) {

tag = "该Tag为空";

}

if (TextUtils.isEmpty(msg)) {

Log.e(tag, "该log输出信息为空");

} else {

Log.e(tag, msg);

}

}

}

/**---------------日志输出, end---------------**/

}

上一篇下一篇

猜你喜欢

热点阅读