Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Menguasai Logging Java: Dasar-dasar & Praktik Terbaik

Dasar-dasar Logging Java

Dalam tutorial ini, kita akan mempelajari tentang Logging Java dan berbagai komponennya dengan bantuan contoh.

Java memungkinkan kita untuk membuat dan menangkap pesan log dan file melalui proses logging.

Di Java, logging memerlukan framework dan API. Java memiliki framework logging bawaan di paket java.util.logging.

Kita juga dapat menggunakan framework pihak ketiga seperti Log4j, Logback, dan banyak lagi untuk tujuan logging.


Komponen Logging Java

Gambar di bawah mewakili komponen inti dan aliran kontrol API Logging Java (java.util.logging).

Menguasai Logging Java: Dasar-dasar & Praktik Terbaik

1. Logger

Kelas Logger menyediakan metode untuk logging. Kita dapat membuat objek dari kelas Logger dan memanggil metodenya untuk tujuan logging.

Mari kita ambil contoh.

Logger logger = Logger.getLogger("newLoggerName"); 

Metode getLogger() dari kelas Logger digunakan untuk menemukan atau membuat Logger baru. Argumen string menentukan nama logger.

Di sini, ini membuat objek Logger baru atau mengembalikan Logger yang sudah ada dengan nama yang sama.

Adalah konvensi untuk mendefinisikan Logger setelah kelas saat ini menggunakan class.getName().

Logger logger = Logger.getLogger(MyClass.class.getName()); 

Catatan: Metode ini akan melempar NullPointerException jika nama yang diteruskan adalah null.

Setiap Logger memiliki sebuah level yang menentukan kepentingan pesan log. Ada 7 level log dasar:

Log Level (urutan menurun)Penggunaan
SEVEREgagal serius
WARNINGpesan peringatan, masalah potensial
INFOinformasi runtime umum
CONFIGinformasi konfigurasi
FINEinformasi pengembang umum (pesan tracing)
FINERinformasi pengembang detail (pesan tracing)
FINESTinformasi pengembang sangat detail (pesan tracing)
OFFmatikan logging untuk semua level (tangkap tidak ada)
ALLnyalakan logging untuk semua level (tangkap semua)

Setiap level log memiliki nilai integer yang menentukan tingkat kepentingan kecuali untuk dua level khusus OFF dan ALL.


Mencatat Pesan

Secara default, tiga level log teratas selalu dicatat. Untuk mengatur level yang berbeda, kita dapat menggunakan kode berikut:

logger.setLevel(Level.LogLevel); // contoh logger.setLevel(Level.FINE); 

Dalam contoh ini, hanya level FINE dan level di atasnya yang diatur untuk dicatat. Semua pesan log lainnya dibuang.

Sekarang untuk mencatat pesan, kita menggunakan metode log().

logger.log(Level.LogLevel, "pesan log"); // contoh logger.log(Level.INFO, "Ini adalah pesan log level INFO"); 

Ada metode singkat untuk mencatat pada level yang diinginkan.

logger.info("Ini adalah pesan log level INFO"); logger.warning("Ini adalah pesan log level WARNING"); 

Semua permintaan log yang telah lulus level log yang ditetapkan kemudian diteruskan ke LogRecord.

Catatan: Jika level logger diatur ke null, levelnya diwarisi dari induknya dan seterusnya ke atas pohon.


2. Filter

Filter (jika ada) menentukan apakah LogRecord harus diteruskan atau tidak. Seperti yang namanya tunjukkan, ia menyaring pesan log berdasarkan kriteria tertentu.

Sebuah LogRecord hanya diteruskan dari logger ke log handler dan dari log handler ke sistem eksternal jika lolos kriteria yang ditentukan.

// atur filter logger.setFilter(filter); // ambil filter Filter filter = logger.getFilter(); 

3. Handler (Appenders)

Log handler atau appenders menerima LogRecord dan mengekspor ke berbagai target.

Java SE menyediakan 5 handler bawaan:

HandlersPenggunaan
StreamHandlermenulis ke OutputStream
ConsoleHandlermenulis ke console
FileHandlermenulis ke file
SocketHandlermenulis ke port TCP jarak jauh
MemoryHandlermenulis ke memori

Sebuah handler dapat melewatkan LogRecord ke filter untuk lagi menentukan apakah dapat diteruskan ke sistem eksternal atau tidak.

Untuk menambahkan handler baru, kita menggunakan kode berikut:

logger.addHandler(handler); // contoh Handler handler = new ConsoleHandler(); logger.addHandler(handler); 

Untuk menghapus handler, kita menggunakan kode berikut:

logger.removeHandler(handler); // contoh Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler); 

Sebuah logger dapat memiliki beberapa handler. Untuk mendapatkan semua handler, kita menggunakan kode berikut:

Handler[] handlers = logger.getHandlers(); 

4. Formatter

Sebuah handler juga dapat menggunakan Formatter untuk memformat objek LogRecord menjadi string sebelum mengekspor ke sistem eksternal.

Java SE memiliki dua Formatter bawaan:

FormattersPenggunaan
SimpleFormattermemformat LogRecord ke string
XMLFormattermemformat LogRecord ke bentuk XML

Kita dapat menggunakan kode berikut untuk memformat handler:

// format ke bentuk string handler.setFormatter(new SimpleFormatter()); // format ke bentuk XML handler.setFormatter(new XMLFormatter()); 

LogManager

Objek LogManager melacak informasi logging global. Ini membaca dan memelihara konfigurasi logging dan instance logger.

Log manager adalah singleton, yang berarti hanya satu instance yang diinstantiasi.

Untuk mendapatkan instance log manager, kita menggunakan kode berikut:

LogManager manager = LogManager.getLogManager(); 

Keuntungan Logging

Berikut adalah beberapa keuntungan logging di Java.


java

  1. Menguasai Operator Java: Tipe, Sintaks, & Contoh Praktis
  2. Komentar Java: Tipe, Penggunaan, dan Best Practices
  3. Menguasai Java Enhanced For Loop: Sintaks, Contoh, dan Best Practices
  4. Menguasai String Java: Pembuatan, Metode, dan Best Practices
  5. Menguasai Antarmuka Java: Konsep, Implementasi, dan Praktik Terbaik
  6. Menguasai Kelas Dalam Anonim Java: Definisi, Sintaks, dan Contoh Praktis
  7. Menguasai Java Try-with-Resources: Manajemen Sumber Daya Otomatis Dijelaskan
  8. Anotasi Java Dijelaskan: Jenis, Penempatan, dan Contoh Praktis
  9. Pernyataan Java: Panduan Praktis untuk Mendeteksi Bug dan Memastikan Keandalan Kode
  10. Memahami Java Vector: Penggunaan, Fitur, dan Perbandingan dengan ArrayList