Android开发中,调试程序时会打印log,当log足够多的时候,想要找到打印log的位置就比较麻烦,不得已还得全文搜索。接下来介绍一个便捷的方式定位到log的位置
打印的log可以直接链接回代码
使用方式
Logger.e("测试一下");
效果图
工具类完整代码
import android.util.Log;
/**
* 日志类:可以链接回代码
*/
public class Logger {
protected static final String TAG = "WADAXI";
private Logger() {
}
public static void v(String msg) {
if (BuildConfig.DEBUG) {
Log.v(TAG, buildMessage(msg));
}
}
public static void v(String msg, Throwable t) {
if (BuildConfig.DEBUG) {
Log.v(TAG, buildMessage(msg), t);
}
}
public static void d(String msg) {
if (BuildConfig.DEBUG) {
Log.d(TAG, buildMessage(msg));
}
}
public static void d(String msg, Throwable t) {
if (BuildConfig.DEBUG) {
Log.d(TAG, buildMessage(msg), t);
}
}
public static void i(String msg) {
if (BuildConfig.DEBUG) {
Log.i(TAG, buildMessage(msg));
}
}
public static void i(String msg, Throwable t) {
if (BuildConfig.DEBUG) {
Log.i(TAG, buildMessage(msg), t);
}
}
public static void w(String msg) {
if (BuildConfig.DEBUG) {
Log.w(TAG, buildMessage(msg));
}
}
public static void w(String msg, Throwable t) {
if (BuildConfig.DEBUG) {
Log.w(TAG, buildMessage(msg), t);
}
}
public static void e(String msg) {
if (BuildConfig.DEBUG) {
Log.e(TAG, buildMessage(msg));
}
}
public static void e(String msg, Throwable t) {
if (BuildConfig.DEBUG) {
Log.e(TAG, buildMessage(msg), t);
}
}
/**
* 构建 log 的 message
*
* @param message 要打印的信息
* @return 完成拼接的信息
*/
private static String buildMessage(String message) {
StackTraceElement stackTrace = new Throwable().fillInStackTrace().getStackTrace()[2];
String fullName = stackTrace.getClassName();
StringBuilder builder = new StringBuilder();
builder.append(message).append("{(");
if (fullName.contains("$")) {
builder.append(fullName.substring(fullName.lastIndexOf(".") + 1, fullName.indexOf("$")));
} else {
builder.append(fullName.substring(fullName.lastIndexOf(".") + 1));
}
builder.append(".java:")
.append(stackTrace.getLineNumber())
.append(")#")
.append(stackTrace.getMethodName())
.append("()}");
return builder.toString();
}
}
当然,这个TAG可以自定义,你也可以任意改造这个工具类。
只是为了让log更便捷