前言:
平常在android應用的開發的過程中間,我們都需要對應用的部分信息,打印出來,好在LogCat中查看。
然而,普通的日誌的打印,有時候是很難定位到具體的代碼中的。
在 https://github.com/MustafaFerhan/DebugLog 提供了一種比較好的日誌的顯示的方式。
我們可以定位到具體代碼的每一行和每個方法;
Code:
/**
* @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 */
}
/**
* 判斷是否是處在debug模式下,只有在這種模式下才打印日誌;
* @return
*/
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;
/**
* new Throwable().getStackTrace() 跟蹤應用的堆棧的信息
*/
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));
}
}
參考:https://github.com/MustafaFerhan/DebugLog