java
Dalam tutorial ini, kita akan belajar tentang Java Logging dan berbagai komponennya dengan bantuan contoh.
Java memungkinkan kita membuat dan menangkap pesan dan file log melalui proses logging.
Di Java, logging membutuhkan kerangka kerja dan API. Java memiliki kerangka kerja logging bawaan di java.util.logging
paket.
Kami juga dapat menggunakan kerangka kerja pihak ketiga seperti Log4j, Logback, dan banyak lagi untuk tujuan logging.
Gambar di bawah menunjukkan komponen inti dan alur kontrol Java Logging API (java.util.logging
).
Logger
class menyediakan metode untuk logging. Kita dapat membuat instance objek dari Logger
class dan memanggil metodenya untuk tujuan logging.
Mari kita ambil contoh.
Logger logger = Logger.getLogger("newLoggerName");
getLogger()
metode Logger
class digunakan untuk mencari atau membuat Logger
baru . Argumen string mendefinisikan nama logger.
Di sini, ini membuat Logger
baru objek atau mengembalikan Logger
. yang ada dengan nama yang sama.
Ini adalah konvensi untuk mendefinisikan Logger
setelah kelas saat ini menggunakan class.getName()
.
Logger logger = Logger.getLogger(MyClass.class.getName());
Catatan: Metode ini akan membuang NullPointerException
jika nama yang dikirimkan adalah null
.
Setiap Logger
memiliki tingkat yang menentukan pentingnya pesan log. Ada 7 level log dasar:
Tingkat Log (dalam urutan menurun) | Gunakan |
---|---|
PARAH | kegagalan serius |
PERINGATAN | pesan peringatan, kemungkinan masalah |
INFO | informasi waktu proses umum |
CONFIG | informasi konfigurasi |
BAIK | informasi pengembang umum (melacak pesan) |
LEBIH BAIK | informasi pengembang terperinci (melacak pesan) |
TERBAIK | informasi pengembang yang sangat mendetail (melacak pesan) |
NONAKTIF | matikan logging untuk semua level (jangan tangkap apa pun) |
SEMUA | aktifkan logging untuk semua level (tangkap semuanya) |
Setiap level log memiliki nilai integer yang menentukan tingkat keparahannya kecuali untuk dua level log khusus OFF
dan ALL
.
Secara default, tiga level log teratas selalu dicatat. Untuk mengatur level yang berbeda, kita dapat menggunakan kode berikut:
logger.setLevel(Level.LogLevel);
// example
logger.setLevel(Level.FINE);
Dalam contoh ini, hanya level FINE
dan level di atasnya diatur untuk dicatat. Semua pesan log lainnya dihapus.
Sekarang untuk mencatat pesan, kami menggunakan log()
metode.
logger.log(Level.LogLevel, "log message");
// example
logger.log(Level.INFO, "This is INFO log level message");
Ada metode singkat untuk masuk pada level yang diinginkan.
logger.info( "This is INFO log level message");
logger.warning( "This is WARNING log level message");
Semua permintaan log yang telah melewati tingkat log yang ditetapkan kemudian diteruskan ke LogRecord .
Catatan: Jika level logger diatur ke null
, levelnya diwarisi dari induknya dan seterusnya ke atas pohon.
Filter (jika ada) menentukan apakah LogRecord harus diteruskan atau tidak. Seperti namanya, ini memfilter pesan log menurut kriteria tertentu.
Sebuah Rekam Log hanya diteruskan dari logger ke penangan log dan dari penangan log ke sistem eksternal jika melewati kriteria yang ditentukan.
// set a filter
logger.setFilter(filter);
// get a filter
Filter filter = logger.getFilter();
Handler log atau appender menerima LogRecord dan mengekspornya ke berbagai target.
Java SE menyediakan 5 pengendali bawaan:
Penangan | Gunakan |
---|---|
StreamHandler | menulis ke OutputStream |
ConsoleHandler | menulis ke konsol |
FileHandler | menulis ke file |
SocketHandler | menulis ke port TCP jarak jauh |
MemoryHandler | menulis ke memori |
Handler dapat melewati LogRecord ke filter untuk menentukan kembali apakah dapat diteruskan ke sistem eksternal atau tidak.
Untuk menambahkan handler baru, kita menggunakan kode berikut:
logger.addHandler(handler);
// example
Handler handler = new ConsoleHandler();
logger.addHandler(handler);
Untuk menghapus handler, kami menggunakan kode berikut:
logger.removeHandler(handler);
// example
Handler handler = new ConsoleHandler();
logger.addHandler(handler);
logger.removeHandler(handler);
Logger dapat memiliki beberapa penangan. Untuk mendapatkan semua handler, kami menggunakan kode berikut:
Handler[] handlers = logger.getHandlers();
Handler juga dapat menggunakan Formatter untuk memformat LogRecord objek ke dalam string sebelum mengekspornya ke sistem eksternal.
Java SE memiliki dua Formater . bawaan :
Formater | Gunakan |
---|---|
SimpleFormatter | format LogRecord untuk merangkai |
XMLFormatter | format LogRecord ke bentuk XML |
Kita dapat menggunakan kode berikut untuk memformat handler:
// formats to string form
handler.setFormatter(new SimpleFormatter());
// formats to XML form
handler.setFormatter(new XMLFormatter());
Pengelola Log objek melacak informasi logging global. Ia membaca dan memelihara konfigurasi logging dan instance logger.
Manajer log adalah singleton, yang berarti hanya satu instance yang dibuat.
Untuk mendapatkan instance manajer log, kami menggunakan kode berikut:
LogManager manager = new LogManager();
Berikut adalah beberapa keuntungan login di Java.
java
Antarmuka Antrian Java Dalam tutorial ini, kita akan belajar tentang antarmuka Java Queue dan metodenya. Queue antarmuka kerangka koleksi Java menyediakan fungsionalitas struktur data antrian. Ini memperluas Collection antarmuka. Kelas yang Menerapkan Antrian Sejak Queue adalah antarmuka, kami t
Java PriorityQueue Dalam tutorial ini, kita akan belajar tentang kelas PriorityQueue dari framework koleksi Java dengan bantuan contoh. PriorityQueue class menyediakan fungsionalitas struktur data heap. Ini mengimplementasikan antarmuka Antrian. Tidak seperti antrian normal, elemen antrian pri
Antarmuka Deque Java Dalam tutorial ini, kita akan belajar tentang antarmuka Deque, cara menggunakannya, dan metodenya. Deque antarmuka kerangka koleksi Java menyediakan fungsionalitas antrian berujung ganda. Ini memperluas Queue antarmuka. Kerja Deque Dalam antrian biasa, elemen ditambahkan dar
Java LinkedList Dalam tutorial ini, kita akan belajar tentang Java LinkedList secara detail dengan bantuan contoh. LinkedList kelas kerangka koleksi Java menyediakan fungsionalitas struktur data daftar tertaut (daftar tertaut ganda). Setiap elemen dalam daftar tertaut dikenal sebagai simpul . In