个人觉得,android开发中的log很必要,但为了log去依赖第三方库,却又显得太重,真是此事古难全啊。
于是乎,简单的包装下log日常使用,惶惶恐难辨优劣,发上来欢迎吐槽~
废话不多,上码
public class AppLog {
public static void v(String content) {
if (BuildConfig.DEBUG) {
Log.d(generateTag(), content);
}
}
public static void d(String content) {
if (BuildConfig.DEBUG) {
Log.d(generateTag(), content);
}
}
public static void i(String content) {
if (BuildConfig.DEBUG) {
Log.i(generateTag(), content);
}
}
public static void w(String content) {
if (BuildConfig.DEBUG) {
Log.w(generateTag(), content);
}
}
public static void e(String content) {
if (BuildConfig.DEBUG) {
Log.e(generateTag(), content);
}
}
public static void wtf(Throwable t) {
if (BuildConfig.DEBUG) {
Log.wtf(generateTag(), t);
}
}
public static void wtf(String content) {
if (BuildConfig.DEBUG) {
Log.wtf(generateTag(), content);
}
}
public static void json(String content) {
if (BuildConfig.DEBUG) {
printJson(generateTag(), content);
}
}
private static StackTraceElement getCallerStackTraceElement() {
return Thread.currentThread().getStackTrace()[5];
}
private static String generateTag() {
String tag = "%s.%s(L:%d)";
StackTraceElement caller = getCallerStackTraceElement();
String callerClazzName = caller.getClassName();
callerClazzName = callerClazzName.substring(callerClazzName.lastIndexOf(".") + 1);
tag = String.format(tag, callerClazzName, caller.getMethodName(), caller.getLineNumber());
return tag;
}
private static void printJson(String tag, String msg) {
String message;
try {
if (msg.startsWith("{")) {
message = new JSONObject(msg).toString(4);
} else if (msg.startsWith("[")) {
message = new JSONArray(msg).toString(4);
} else {
message = msg;
}
} catch (JSONException e) {
message = msg;
}
String[] lines = message.split(System.getProperty("line.separator"));
blockStart(tag);
for (String line : lines) {
Log.d(tag, "║ " + line);
}
blockEnd(tag);
}
private static void blockStart(String tag) {
Log.d(tag, "╔═══════════════════════════════════════════════════════════════════════════════════════");
}
private static void blockEnd(String tag) {
Log.d(tag, "╚═══════════════════════════════════════════════════════════════════════════════════════");
}
}
用法略
效果如下: