4.1 Daftar level logging
Anda menulis program Anda, mengunggahnya ke server, dan kemudian Anda segera mulai memiliki pertanyaan:
- Bagaimana cara memastikan bahwa
debug()
metode ini tidak berfungsi saat bekerjaproduction
? - Ada terlalu banyak informasi di log, apakah Anda hanya ingin meninggalkan pesan kesalahan?
- Bagaimana cara melihat log terperinci untuk satu bagian aplikasi?
Tentu saja, pembuat log menghadapi hal yang sama beberapa dekade lalu. Saya tidak akan memberi tahu Anda bagaimana masalah ini diselesaikan dalam bahasa C, tetapi dalam bahasa Java masalah ini diselesaikan dengan sangat indah.
Log memfilter data sebelum menulis informasi ke file . Anda dapat dengan cepat mengurangi/meningkatkan detail log dengan menyetel level logging. Level-level tersebut dijelaskan dalam tabel di bawah ini:
Tingkat | Catatan | |
---|---|---|
1 | SEMUA | Log semua pesan |
2 | JEJAK | Pesan kecil saat debugging |
3 | DEBUG | Pesan penting untuk debugging |
4 | INFO | Pesan sederhana |
5 | MEMPERINGATKAN | Tulis hanya fatal, error dan peringatan |
6 | KESALAHAN | Tulis hanya kesalahan dan kesalahan fatal |
7 | FATAL | Tulis hanya kesalahan fatal |
8 | MATI | Jangan menulis pesan ke log |
Level ini digunakan saat memfilter pesan. Jika Anda menyetel tingkat pencatatan ke WARN
, maka semua pesan yang kurang penting dari itu WARN
akan dibuang: TRACE
, DEBUG
, INFO
. Jika Anda menyetel tingkat pemfilteran ke FATAL
, bahkan ERROR
.
Ada dua tingkat keparahan lagi yang digunakan dalam pemfilteran - ini OFF
(buang semua pesan) dan ALL
- tulis semua pesan (buang apa pun).
4.2 Contoh penyiapan log
Mari kita lihat contoh penyiapan log sederhana. Untuk melakukan ini, kita memerlukan file log4j.properties, yang dapat ditempatkan di folder sumber daya. Mari tambahkan konten berikut ke dalamnya:
# Root logger option
log4j.rootLogger=WARN, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}
Di sini, di baris pertama kami mengatur level logging - WARN
. Dan ini berarti pesan yang ditulis ke logger dengan status DEBUG
akan INFO
diabaikan.
- Tentukan jenis appender apa yang akan kita gunakan -
ConsoleAppender
- Tentukan di mana kita akan menulis log -
System.out
- Kami menetapkan kelas yang akan mengontrol format perekaman -
PatternLayout
- Atur format perekaman untuk semua pesan - tanggal dan waktu
4.3 Kesalahan logging yang populer
Dan satu hal penting lagi - kesalahan populer dalam logging. Tidak banyak pilihan untuk melakukan sesuatu, tetapi beberapa kesalahan umum dapat diidentifikasi:
- Terlalu banyak penebangan . Anda tidak boleh mencatat setiap langkah, yang secara teoritis bisa jadi penting. Ada aturannya: log dapat memuat kinerja tidak lebih dari 10% . Kalau tidak, akan ada masalah kinerja.
- Mencatat semua data ke dalam satu file . Ini akan menyebabkan sangat sulit untuk membaca/menulis di beberapa titik, belum lagi ada batasan ukuran file pada sistem tertentu.
- Menggunakan level logging yang salah . Setiap tingkat penebangan memiliki batas yang jelas, dan harus dihormati. Jika batasnya tidak jelas, Anda dapat menyepakati level mana yang akan digunakan.
GO TO FULL VERSION