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

可以输出类名、函数名以及所在行号的Log帮助类

2015-09-14 14:33 471 查看
/***
* 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/>
*/

import android.text.TextUtils;
import android.util.Log;
import com.cpoopc.smoothemotionkeyboard.BuildConfig;

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

public class DebugLog {

static String tagPrefix = "cp:";
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();
if (!TextUtils.isEmpty(tagPrefix)) {
className = tagPrefix + className;
}
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));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 帮助类 Log