您的位置:首页 > 移动开发 > Android开发

Android常用工具类之 Log工具类

2015-12-17 15:15 351 查看
Log工具类推荐一个开源的工具:

https://github.com/MustafaFerhan/DebugLog

源码只有一个类DebugLog.java

打印出来的内容也很简洁,但是很方便:

使用方法:

DebugLog.e("I am an error log");


打印效果:

4959-4959/com.example.pc.myapplication E/MainActivity.java﹕ [onClick:45]I am an error log


可以看出:

1. 自动打印Tag,不需要自己定义Tag,会打印出该log所在的类名

2. 自动获取打印的函数。本例中该log在onClick函数重打印

3. 自动获取打印log的位置的代码行数,便于快速定位。

其他好处:

源码内通过

public static boolean isDebuggable() {
return BuildConfig.DEBUG;
}


来确定是否是debug模式,在 build variant 是 ‘release’的时候,会自动隐藏log

下面贴出源码,感兴趣的可以去github中查看更多详细内容。


/***
This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.

For more information, please refer to <http://unlicense.org/>
*/

package com.example.pc.myapplication;

import android.util.Log;

/**
* @date 21.06.2012
* @author Mustafa Ferhan Akman
*
* Create a simple and more understandable Android logs.
* */

public class DebugLog{

static String className;
static String methodName;
static int lineNumber;

private DebugLog(){
/* Protect from instantiations */
}

public static boolean isDebuggable() { return BuildConfig.DEBUG; }

private static String createLog( String log ) {

StringBuffer buffer = new StringBuffer();
buffer.append("[");
buffer.append(methodName);
buffer.append(":");
buffer.append(lineNumber);
buffer.append("]");
buffer.append(log);

return buffer.toString();
}

private static void getMethodNames(StackTraceElement[] sElements){
className = sElements[1].getFileName();
methodName = sElements[1].getMethodName();
lineNumber = sElements[1].getLineNumber();
}

public static void e(String message){
if (!isDebuggable())
return;

// Throwable instance must be created before any methods
getMethodNames(new Throwable().getStackTrace());
Log.e(className, createLog(message));
}

public static void i(String message){
if (!isDebuggable())
return;

getMethodNames(new Throwable().getStackTrace());
Log.i(className, createLog(message));
}

public static void d(String message){
if (!isDebuggable())
return;

getMethodNames(new Throwable().getStackTrace());
Log.d(className, createLog(message));
}

public static void v(String message){
if (!isDebuggable())
return;

getMethodNames(new Throwable().getStackTrace());
Log.v(className, createLog(message));
}

public static void w(String message){
if (!isDebuggable())
return;

getMethodNames(new Throwable().getStackTrace());
Log.w(className, createLog(message));
}

public static void wtf(String message){
if (!isDebuggable())
return;

getMethodNames(new Throwable().getStackTrace());
Log.wtf(className, createLog(message));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: