Pembalakan Java

Dalam tutorial ini, kita akan belajar mengenai Java Logging dan pelbagai komponennya dengan bantuan contoh.

Java membolehkan kita membuat dan menangkap mesej log dan fail melalui proses pembalakan.

Di Java, pembalakan memerlukan kerangka kerja dan API. Java mempunyai kerangka pembalakan terbina dalam java.util.loggingpakej.

Kami juga boleh menggunakan kerangka kerja pihak ketiga seperti Log4j, Logback dan banyak lagi untuk tujuan pembalakan.

Komponen Pembalakan Java

Gambar di bawah menunjukkan komponen teras dan aliran kawalan Java Logging API ( java.util.logging).

Pembalakan Java

1. Pembalak

The Loggerkelas menyediakan kaedah untuk pembalakan. Kita dapat membuat objek dari Loggerkelas dan memanggil kaedahnya untuk tujuan pembalakan.

Mari kita ambil contoh.

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

The getLogger()kaedah yang Loggerkelas digunakan untuk mencari atau mencipta yang baru Logger. Argumen rentetan menentukan nama penebang.

Di sini, ini membuat Loggerobjek baru atau mengembalikan yang ada Loggerdengan nama yang sama.

Ini adalah konvensyen untuk menentukan Loggerselepas kelas semasa menggunakan class.getName().

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

Catatan: Kaedah ini akan dilemparkan NullPointerExceptionjika nama lulus null.

Masing Logger- masing mempunyai tahap yang menentukan kepentingan mesej log. Terdapat 7 tahap log asas:

Tahap Log (mengikut urutan menurun) Gunakan
SELAMAT kegagalan serius
AMARAN mesej amaran, kemungkinan masalah
INFO maklumat jangka masa am
KONFIG maklumat konfigurasi
BAIK maklumat pembangun umum (mengesan mesej)
SELESAI maklumat pembangun terperinci (mengesan mesej)
TERBAIK maklumat pembangun yang sangat terperinci (mengesan mesej)
MATI matikan pembalakan untuk semua peringkat (tidak menangkap apa-apa)
SEMUA hidupkan log untuk semua peringkat

Setiap tahap log mempunyai nilai integer yang menentukan keparahannya kecuali dua tahap log khas OFFdan ALL.

Mencatat mesej

Secara lalai, tiga tahap log teratas selalu dicatat. Untuk menetapkan tahap yang berbeza, kita dapat menggunakan kod berikut:

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

Dalam contoh ini, hanya tahap FINEdan tahap di atasnya yang ditetapkan untuk dicatat. Semua mesej log lain digugurkan.

Sekarang untuk log mesej, kami menggunakan log()kaedah.

 logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message"); 

Terdapat kaedah ringkas untuk log pada tahap yang diinginkan.

 logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message"); 

Semua permintaan log yang telah melepasi tahap log yang ditetapkan kemudian diteruskan ke LogRecord .

Catatan: Sekiranya tahap penebang ditetapkan null, tahapnya diwarisi dari induknya dan seterusnya ke atas pokok.

2. Penapis

Penapis (jika ada) menentukan sama ada LogRecord harus diteruskan atau tidak. Seperti namanya, ia menyaring mesej log mengikut kriteria tertentu.

A LogRecord hanya lulus dari logger untuk pengendali log dan dari pengendali log untuk sistem luaran jika ia melepasi kriteria yang ditetapkan.

 // set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter(); 

3. Pengendali (Appenders)

Pengendali log atau pelengkap menerima LogRecord dan mengeksportnya ke pelbagai sasaran.

Java SE menyediakan 5 pengendali terbina dalam:

Penangan Gunakan
StreamHandler menulis kepada seorang OutputStream
ConsoleHandler menulis untuk menghiburkan
FileHandler menulis ke fail
SocketHandler menulis ke port TCP jauh
MemoryHandler menulis ke ingatan

Pengendali boleh meneruskan LogRecord ke penapis untuk menentukan lagi apakah ia dapat diteruskan ke sistem luaran atau tidak.

Untuk menambahkan pengendali baru, kami menggunakan kod berikut:

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

Untuk membuang pengendali, kami menggunakan kod berikut:

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

Pembalak boleh mempunyai banyak pengendali. Untuk mendapatkan semua pengendali, kami menggunakan kod berikut:

 Handler() handlers = logger.getHandlers(); 

4. Pembentuk format

Pengendali juga dapat menggunakan Formatter untuk memformat objek LogRecord menjadi rentetan sebelum mengeksportnya ke sistem luaran.

Java SE mempunyai dua Formatters terbina dalam :

Pembentuk borang Gunakan
SimpleFormatter format LogRecord ke rentetan
XMLFormatter format LogRecord ke bentuk XML

Kita boleh menggunakan kod berikut untuk memformat pengendali:

 // formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter()); 

Pengurus Log

The LogManager objek menjejaki maklumat pembalakan global. Ia membaca dan mengekalkan konfigurasi pembalakan dan contoh pembalak.

Pengurus log adalah singleton, yang bermaksud bahawa hanya satu contohnya yang dibuat.

Untuk mendapatkan contoh pengurus log, kami menggunakan kod berikut:

 LogManager manager = new LogManager(); 

Kelebihan Pembalakan

Berikut adalah beberapa kelebihan log masuk di Java.

  • membantu dalam memantau aliran program
  • membantu dalam menangkap kesilapan yang mungkin berlaku
  • memberikan sokongan untuk diagnosis masalah dan penyahpepijatan

Artikel menarik...