java.util.logging
membuat Anda tidak perlu membawa satu file jar lagi dengan aplikasi Anda, dan itu berfungsi dengan baik dengan Formatter yang baik.
Secara umum, di bagian atas setiap kelas , Anda harus memiliki:
private static final Logger LOGGER = Logger.getLogger( ClassName.class.getName() );
Kemudian, Anda bisa menggunakan berbagai fasilitas dari kelas Logger .
Gunakan Level.FINE
untuk apa pun yang sedang debugging di tingkat atas dari aliran eksekusi:
LOGGER.log( Level.FINE, "processing {0} entries in loop", list.size() );
Gunakan Level.FINER
/ Level.FINEST
di dalam loop dan di tempat-tempat di mana Anda mungkin tidak selalu perlu melihat banyak detail ketika men-debug masalah aliran dasar:
LOGGER.log( Level.FINER, "processing[{0}]: {1}", new Object[]{ i, list.get(i) } );
Gunakan versi parameterisasi dari fasilitas logging untuk menjaga dari menghasilkan ton sampah gabungan String yang harus diikuti GC. Object[]
seperti di atas murah, alokasi tumpukan biasanya.
Dengan penanganan pengecualian, selalu catat rincian pengecualian lengkap:
try {
...something that can throw an ignorable exception
} catch( Exception ex ) {
LOGGER.log( Level.SEVERE, ex.toString(), ex );
}
Saya selalu menyampaikan ex.toString()
pesan di sini, karena ketika saya " grep -n
" untuk " Exception
" dalam file log, saya juga bisa melihat pesannya. Jika tidak, itu akan berada pada baris output berikutnya yang dihasilkan oleh dump stack, dan Anda harus memiliki RegEx yang lebih canggih untuk mencocokkan garis itu juga, yang sering memberi Anda lebih banyak output daripada yang perlu Anda perhatikan.