Bagaimana cara menulis output ke Log in Android?


153

Saya ingin menulis beberapa hasil debugging ke log untuk memeriksanya dengan logcat.

Jika saya menulis sesuatu ke System.out ini sudah ditampilkan di logcat.

Apa cara bersih untuk menulis ke log dan menambahkan level dan tag ke output saya?

Jawaban:


211

Lihatlah ke dalam android.util.Log. Ini memungkinkan Anda menulis ke log dengan berbagai level log, dan Anda dapat menentukan tag berbeda untuk mengelompokkan output. Sebagai contoh

Log.w("myApp", "no network");

akan menampilkan peringatan dengan tag myApp dan pesan no network.


apa bedanya dengan menggunakan log.d?
JMASTER B

5
wdi Log.w(...)singkatan peringatan. Ada lebih banyak versi: d- debug, e- error, i- info, v- verbose, wtf- Kegagalan yang Mengerikan. ;-)
patryk.beza

20

Tag hanya digunakan untuk dengan mudah menemukan output Anda, karena Output dari LogCat terkadang sangat panjang. Anda dapat mendefinisikan suatu tempat di kelas Anda:

private String akhir statis TAG = "myApp";

dan menggunakannya saat debugging

Log.v (TAG, "melakukan sesuatu");

masukkan deskripsi gambar di sini

Anda juga dapat menerapkan Filter untuk hanya mencari tag.


17

Gunakan android.util.Logdan metode statis yang ditentukan di sana (misalnya e(),, w()).


8
import android.util.Log;

lalu

Log.i("the your message will go here"); 

5

Silakan lihat log seperti ini,

Log.e("ApiUrl = ", "MyApiUrl") (error)
Log.w("ApiUrl = ", "MyApiUrl") (warning)
Log.i("ApiUrl = ", "MyApiUrl") (information)
Log.d("ApiUrl = ", "MyApiUrl") (debug)
Log.v("ApiUrl = ", "MyApiUrl") (verbose)

1

Anda dapat menggunakan perpustakaan saya yang disebut RDALogger. Berikut ini tautan github .

Dengan perpustakaan ini, Anda dapat mencatat pesan Anda dengan nama metode / nama kelas / nomor baris dan tautan jangkar. Dengan tautan ini, ketika Anda mengklik log, layar menuju ke baris kode ini.

Untuk menggunakan perpustakaan, Anda harus melakukan implementasi di bawah ini.

di tingkat akar kelas

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

di tingkat tingkat aplikasi

dependencies {
            implementation 'com.github.ardakaplan:RDALogger:1.0.0'
    }

Untuk menginisialisasi perpustakaan, Anda harus mulai seperti ini (di Application.class atau sebelum digunakan pertama kali)

RDALogger.start("TAG NAME").enableLogging(true);

Dan daripada Anda dapat login apa pun yang Anda inginkan;

    RDALogger.info("info");
    RDALogger.debug("debug");
    RDALogger.verbose("verbose");
    RDALogger.warn("warn");
    RDALogger.error("error");
    RDALogger.error(new Throwable());
    RDALogger.error("error", new Throwable());

Dan akhirnya output menunjukkan semua yang Anda inginkan (nama kelas, nama metode, tautan jangkar, pesan)

08-09 11:13:06.023 20025-20025/com.ardakaplan.application I/Application: IN CLASS : (ENApplication.java:29)   ///   IN METHOD : onCreate
    info


0

Baru-baru ini saya menemukan pendekatan ini untuk menulis log di android, yang saya pikir sangat luar biasa.

public static final boolean FORCED_LOGGING = true;
private static final int CALLER_STACK_INDEX = 3;

public static void showLogs(String message) {
        if (FORCED_LOGGING) {
            StackTraceElement caller = Thread.currentThread().getStackTrace()[CALLER_STACK_INDEX];

            String fullClassName = caller.getClassName();
            String className = fullClassName.substring(fullClassName.lastIndexOf('.') + 1);
            String methodName = caller.getMethodName();
            int lineNumber = caller.getLineNumber();

            Log.i("*** " + className + "." + methodName + "():" + lineNumber + "\n" , message);
        }
    }
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.