直接從 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]),你還可以新增其他相關資訊。