Apakah ada cara untuk mengakses secara otomatis Log in Logcat dengan klik dua kali?

Apakah ada cara untuk mengakses secara otomatis Log in Logcat dengan klik dua kali?

Sebenarnya, ketika ada kesalahan saat Aplikasi Android saya mogok, saya bisa mengklik dua kali pada baris yang mengatakan misalnya

at com.myapp.mypackage$Class.function(File.java:117)

Dan dengan mengklik dua kali pada baris ini, saya secara otomatis diarahkan ke baris terkait kode saya.

Namun, ketika saya mencoba membuat baris yang sama di Log lain, contoh:

Log.e("TAG", "at com.myapp.mypackage$Class.function(File.java:117)");

Klik Dua Kali tidak berfungsi lagi ...

Ada ide?


person Thordax    schedule 09.11.2011    source sumber
comment
Anda mungkin bisa throw pengecualian dari baris tempat Anda mendapatkan masalah.. Tapi itu juga akan menghentikan program Anda   -  person Default    schedule 09.11.2011
comment
Itu karena editor menangani Stack trace dari pengecualian. Bergantung pada kode dari editor, ini hanya mungkin jika pembuat IDE mencocokkan string di log dengan file sebenarnya di proyek Anda.   -  person Patrick    schedule 09.11.2011
comment
Jika menggunakan gerhana, Anda dapat menggunakan Konsol Stacktrace.   -  person JimmyB    schedule 09.11.2011


Jawaban (2)


Jika Anda tidak keberatan dengan kekacauan di log Anda, Anda dapat dengan mudah menambahkan new Exception() ke pesan log

Log.e("TAG", "Looky here see", new Exception());
person Patrick    schedule 09.11.2011
comment
Terima kasih atas tipnya, itu cukup efisien, dan saya benar-benar tidak keberatan jika log saya berantakan. - person Thordax; 10.11.2011

Jika Anda ingin membuat log in logcat yang dapat diklik dan menuju ke baris Anda, gunakan cara berikut untuk membuatnya:

Menikmati!

public static void showLogCat(String tag, String msg) {

        StackTraceElement[] stackTraceElement = Thread.currentThread()
                .getStackTrace();
        int currentIndex = -1;
        for (int i = 0; i < stackTraceElement.length; i++) {
            if (stackTraceElement[i].getMethodName().compareTo("showLogCat") == 0)
            {
                currentIndex = i + 1;
                break;
            }
        }

        String fullClassName = stackTraceElement[currentIndex].getClassName();
        String className = fullClassName.substring(fullClassName
                .lastIndexOf(".") + 1);
        String methodName = stackTraceElement[currentIndex].getMethodName();
        String lineNumber = String
                .valueOf(stackTraceElement[currentIndex].getLineNumber());

        Log.i(tag, msg);
        Log.i(tag + " position", "at " + fullClassName + "." + methodName + "("
                + className + ".java:" + lineNumber + ")");

    }
person Bobs    schedule 03.09.2012