直接从 Logcat 记录链接到源
这是添加代码链接的一个很好的技巧,因此很容易跳转到发出日志的代码。
使用以下代码,此调用:
MyLogger.logWithLink("MyTag","param="+param);
将导致:
07-26...012/com.myapp D/MyTag: MyFrag:onStart(param=3) (MyFrag.java:2366) // << logcat converts this to a link to source!
这是代码(在一个名为 MyLogger 的类中):
static StringBuilder sb0 = new StringBuilder(); // reusable string object
public static void logWithLink(String TAG, Object param) {
StackTraceElement stack = Thread.currentThread().getStackTrace()[3];
sb0.setLength(0);
String c = stack.getFileName().substring(0, stack.getFileName().length() - 5); // removes the ".java"
sb0.append(c).append(":");
sb0.append(stack.getMethodName()).append('(');
if (param != null) {
sb0.append(param);
}
sb0.append(") ");
sb0.append(" (").append(stack.getFileName()).append(':').append(stack.getLineNumber()).append(')');
Log.d(TAG, sb0.toString());
}
这是一个基本的例子,它可以很容易地扩展到发出一个到调用者的链接(提示:堆栈将是[4]而不是[3]),你还可以添加其他相关信息。