Metode yang berbeda LogCat
adalah:
Log.v(); // Verbose
Log.d(); // Debug
Log.i(); // Info
Log.w(); // Warning
Log.e(); // Error
Apa situasi yang tepat untuk menggunakan setiap jenis Pembalakan? Saya tahu bahwa mungkin itu hanya sedikit semantik dan mungkin itu tidak terlalu penting, tetapi untuk LogCat
memfilter di Android Studio dan Eclipse, akan menyenangkan mengetahui bahwa saya menggunakan metode yang tepat pada waktu yang tepat.
Verbose
logging. Itu yang Anda gunakan ketika Anda ingin menampilkan setiap operasi logis yang mungkin.Log.wtf
saya bahkan memeriksanya beberapa kali dan tertawa terbahak-bahak .. Menurut pendapat saya, Semua API harus memiliki sesuatu seperti ini di dalamMetode yang berbeda merupakan indikasi prioritas. Saat Anda mendaftar, mereka beralih dari yang paling penting ke yang paling penting. Saya pikir bagaimana Anda memetakannya secara khusus ke debug log dalam kode Anda tergantung pada komponen atau aplikasi yang sedang Anda kerjakan, serta bagaimana Android memperlakukannya dengan berbagai rasa build (eng, userdebug, dan pengguna). Saya telah melakukan cukup banyak pekerjaan di daemon asli di Android, dan ini adalah bagaimana saya melakukannya. Ini mungkin tidak berlaku langsung ke aplikasi Anda, tetapi mungkin ada beberapa kesamaan. Jika penjelasan saya kedengarannya kabur, itu karena sebagian dari ini lebih merupakan seni daripada sains. Aturan dasar saya adalah seefisien mungkin, memastikan Anda dapat men-debug komponen Anda secara wajar tanpa mematikan kinerja sistem, dan selalu memeriksa kesalahan dan mencatatnya.
V - Cetakan negara pada interval yang berbeda, atau pada setiap peristiwa yang terjadi yang komponen proses saya. Kemungkinan juga cetakan yang sangat rinci dari muatan pesan / peristiwa yang diterima atau dikirim komponen saya.
D - Detail peristiwa kecil yang terjadi dalam komponen saya, serta muatan pesan / peristiwa yang diterima atau dikirim komponen saya.
I - Header pesan / peristiwa apa pun yang diterima atau dikirim komponen saya, serta setiap potongan penting dari muatan yang sangat penting untuk operasi komponen saya.
W - Apa pun yang terjadi yang tidak biasa atau mencurigakan, tetapi tidak selalu merupakan kesalahan.
E - Kesalahan, artinya hal-hal yang tidak seharusnya terjadi ketika sesuatu berfungsi sebagaimana mestinya.
Kesalahan terbesar yang saya lihat orang lakukan adalah mereka terlalu sering menggunakan hal-hal seperti V, D, dan saya, tetapi tidak pernah menggunakan W atau E. Jika kesalahan, menurut definisi, tidak seharusnya terjadi, atau seharusnya hanya terjadi sangat jarang, maka itu sangat murah bagi Anda untuk mencatat pesan ketika itu terjadi. Di sisi lain, jika setiap kali seseorang menekan kunci Anda melakukan Log.i (), Anda menyalahgunakan sumber logging yang dibagikan. Tentu saja, gunakan akal sehat dan hati-hati dengan log kesalahan untuk hal-hal di luar kendali Anda (seperti kesalahan jaringan), atau yang terkandung dalam loop ketat.
Mungkin buruk
Baik
Dengan semua ini dalam pikiran, semakin dekat kode Anda ke "siap produksi", semakin Anda dapat membatasi level logging dasar untuk kode Anda (Anda perlu V dalam alpha, D dalam beta, I dalam produksi, atau mungkin bahkan W dalam produksi ). Anda harus menjalankan beberapa kasus penggunaan sederhana dan melihat log untuk memastikan bahwa Anda sebagian besar masih dapat memahami apa yang terjadi saat Anda menerapkan pemfilteran yang lebih ketat. Jika Anda menjalankan dengan filter di bawah ini, Anda masih dapat mengetahui apa yang sedang dilakukan aplikasi Anda, tetapi mungkin tidak mendapatkan semua detailnya.
sumber
Kode sumber memberikan beberapa panduan dasar:
Untuk lebih detail, jawaban Kurtis sudah mati. Saya hanya akan menambahkan: Jangan mencatat informasi pribadi atau pribadi di
INFO
atau di atas (WARN
/ERROR
). Kalau tidak, laporan bug atau hal lain apa pun yang termasuk logging dapat dicemari.sumber
Anda dapat menggunakan LOG seperti:
contoh kode:
sumber
Saya pikir inti dari berbagai jenis penebangan adalah jika Anda ingin aplikasi Anda pada dasarnya memfilter log sendiri. Jadi, Verbose bisa mencatat semua yang penting di aplikasi Anda, maka level debug akan mencatat subset dari log verbose, dan kemudian level Info akan mencatat subset dari log debug. Saat Anda masuk ke log Kesalahan, maka Anda hanya ingin mencatat segala jenis kesalahan yang mungkin terjadi. Ada juga level debug bernama Fatal ketika sesuatu benar-benar mengenai kipas di aplikasi Anda.
Secara umum, Anda benar, pada dasarnya arbitrer, dan terserah Anda untuk menentukan apa yang dianggap sebagai log debug versus informasi, versus dan kesalahan, dll. Dll.
sumber
Meskipun pertanyaan ini sudah dijawab, saya merasa ada contoh yang hilang dalam jawaban yang dijawab.
Karena itu saya akan membawa ke sini apa yang saya tulis dalam posting blog "Android Log Levels"
Verbose
Apakah tingkat penebangan terendah. Jika Anda ingin menjadi gila dengan logging maka Anda pergi dengan level ini. Saya tidak pernah mengerti kapan harus menggunakan Verbose dan kapan harus menggunakan Debug. Perbedaannya menurut saya sangat sewenang-wenang. Saya akhirnya memahaminya begitu saya diarahkan ke kode sumber Android¹ "Verbose tidak boleh dikompilasi ke dalam aplikasi kecuali selama pengembangan." Sekarang jelas bagi saya, setiap kali Anda mengembangkan dan ingin menambahkan log yang dapat dihapus yang membantu Anda selama pengembangan, berguna untuk memiliki tingkat verbose ini akan membantu Anda menghapus semua log ini sebelum Anda mulai berproduksi.
Debug
Apakah untuk keperluan debugging. Ini adalah level terendah yang harus di produksi. Informasi yang ada di sini adalah untuk membantu selama pengembangan. Sering kali Anda akan menonaktifkan produksi log ini sehingga lebih sedikit informasi yang akan dikirim dan hanya mengaktifkan log ini jika Anda memiliki masalah. Saya suka masuk debug semua informasi yang dikirim / diterima aplikasi dari server (berhati-hatilah untuk tidak login kata sandi !!!). Ini sangat membantu untuk memahami jika bug ada di server atau aplikasi. Saya juga membuat log masuk dan keluar dari fungsi penting.
Info
Untuk pesan informasi yang menyoroti kemajuan aplikasi. Misalnya, ketika inisialisasi aplikasi selesai. Tambahkan info saat pengguna berpindah antara aktivitas dan fragmen. Catat setiap panggilan API tetapi hanya sedikit informasi seperti URL, status, dan waktu tanggapan.
Peringatan
Ketika ada situasi yang berpotensi berbahaya.
Log ini menurut pengalaman saya adalah tingkat yang sulit. Kapan Anda memiliki situasi berbahaya yang potensial? Secara umum atau tidak apa-apa atau kesalahan. Saya pribadi tidak banyak menggunakan level ini. Contoh ketika saya menggunakannya biasanya ketika barang terjadi beberapa kali. Misalnya, pengguna memiliki kata sandi yang salah lebih dari 3 kali. Ini bisa jadi karena ia salah memasukkan kata sandi 3 kali, bisa juga karena ada masalah dengan karakter yang tidak diterima di sistem kami. Sama halnya dengan masalah koneksi jaringan.
Kesalahan
Peristiwa kesalahan. Aplikasi masih dapat terus berjalan setelah kesalahan. Ini bisa menjadi contoh ketika saya mendapatkan pointer nol di mana saya tidak seharusnya mendapatkannya. Terjadi kesalahan saat menguraikan respons server. Mendapat kesalahan dari server.
WTF (Kegagalan yang Mengerikan)
Fatal adalah untuk peristiwa kesalahan parah yang akan menyebabkan aplikasi keluar. Dalam Android yang fatal pada kenyataannya adalah tingkat Kesalahan, perbedaannya adalah ia juga menambah fullstack.
sumber
Situs web Android Studio baru-baru ini (saya pikir) memberikan beberapa saran pesan seperti apa yang diharapkan dari berbagai tingkat log yang mungkin berguna bersama dengan jawaban Kurtis:
sumber