Pembuatan log dapat menjadi alat yang sangat berharga untuk memecahkan masalah dan menganalisis penggunaan aplikasi. Paket-paket ini membantu menjadikannya proses yang mudah.

Pencatatan yang tepat adalah aspek penting dalam membangun dan memelihara aplikasi web fungsional. Ini dapat membantu Anda melacak kesalahan, mendiagnosis masalah kinerja, dan memahami cara pengguna berinteraksi dengan aplikasi Anda.

Node.js memiliki banyak paket logging untuk membantu Anda membuat dan mengelola log terstruktur. Di sini Anda akan menjelajahi paket logging teratas yang saat ini tersedia di ekosistem Node.js dan cara menggunakannya.

1. Winston

Winston adalah pustaka Node.js yang menyediakan fungsionalitas logging yang fleksibel, termasuk beberapa transportasi. Sebuah "transportasi" adalah media penyimpanan untuk log Anda.

Winston mendukung transportasi konsol, file, dan jaringan. Ini berarti Anda dapat mencetak log Anda ke konsol, menulisnya ke file, atau mengirimkannya melalui jaringan. Dengan menggunakan level logging Winston, Anda dapat membuat transport khusus dan memfilter log berdasarkan tingkat keparahan.

instagram viewer

Anda dapat menginstal Winston sebagai dependensi di direktori proyek Anda menggunakan npm, pengelola paket JavaScript. Jalankan perintah ini:

npm instal winston

Blok kode di bawah ini menunjukkan cara menyiapkan sistem logging dasar menggunakan Winston. Anda dapat menentukan log untuk lokasi berbeda dan berbagai tingkat keparahan.

const Winston = memerlukan("winston");

// Pencatat Winston
const logger = winston.createLogger({
tingkat: 'informasi',
format: winston.format.json(),
defaultMeta: { melayani: 'layanan-saya' },
transportasi: [
baru winston.transports. Menghibur(),
baru winston.transports. Mengajukan({ nama file: 'catatan eror', tingkat: 'kesalahan' }),
baru winston.transports. Mengajukan({ nama file: 'gabungan.log' })
]
});

logger.info('Halo, Winston!');
logger.peringatkan('Peringatan: Mungkin ada yang salah.');
logger.kesalahan('Terjadi kesalahan.');

Kode ini mengonfigurasi logger dengan tiga transpor. Yang pertama adalah transport konsol, yang akan mengeluarkan pesan log ke konsol. Yang kedua adalah file transport yang akan menulis log dengan tingkat "error" ke file "error.log". Yang ketiga adalah file transport yang akan menulis semua log ke file "combined.log".

Pencatat disetel untuk mencatat pada tingkat "info" secara default dan menyertakan objek metadata default dengan bidang "layanan" yang disetel ke "layanan-saya".

Kode kemudian mencatat tiga pesan menggunakan pencatat masing-masing pada tingkat "info", "warn", dan "error". Pesan-pesan ini akan ditampilkan ke konsol dan file log yang sesuai sesuai dengan konfigurasi transport.

2. Morgan

Morgan adalah middleware logging untuk Node.js yang menyediakan kemampuan logging permintaan dasar. Ini dirancang agar ringan dan mudah digunakan. Morgan bekerja dengan mencegat permintaan HTTP dan mencatat informasi yang relevan, seperti metode permintaan, URL, kode status, dll.

Salah satu manfaat utama Morgan adalah kesederhanaannya. Anda dapat menambahkannya ke aplikasi Node.js dengan beberapa baris kode, karena tidak memerlukan konfigurasi tambahan untuk disiapkan.

Morgan mendukung berbagai format logging, termasuk umum, digabungkan, pendek, kecil, Dan dev format, memungkinkan Anda untuk memilih salah satu yang paling sesuai dengan kebutuhan Anda.

Anda dapat menginstal Morgan sebagai dependensi di direktori proyek Anda dengan menjalankan perintah ini:

npm instal morgan

Kode ini menunjukkan cara menggunakan Morgan di aplikasi Ekspres:

const mengungkapkan = memerlukan("cepat");
const morgan = memerlukan("morgan");
const aplikasi = ekspres();

app.use (morgan("dev"));

aplikasi.dapatkan("/", (req, res) => {
kirim ulang("Halo Dunia!");
});

aplikasi.dengarkan(3000, () => menghibur.catatan(`Aplikasi Dimulai`));

Kode menginisialisasi Morgan menggunakan dev format. Saat Anda membuat permintaan GET ke rute root (/), Morgan mencatat detail permintaan tersebut ke konsol.

Terlepas dari kesederhanaannya, Morgan adalah paket logging yang kuat yang menyediakan kemampuan logging permintaan penting untuk aplikasi Node.js.

3. Pino

Pino adalah paket logging yang populer dan ringan untuk aplikasi Node.js yang menawarkan kinerja cepat dan overhead rendah, seperti yang dinyatakan dalam benchmark mereka.

Pino mendukung berbagai jenis transportasi, mudah diperluas dengan transportasi khusus. Salah satu fitur utama Pino adalah kemampuannya untuk mencatat pesan berformat JSON, yang membuatnya mudah diurai dan dianalisis.

Penggunaan Pino bervariasi tergantung pada framework Node.js; Anda dapat menginstal Pino sebagai dependensi di direktori proyek Express Anda dengan menjalankan perintah di bawah ini:

npm instal pino-http

Untuk kerangka kerja yang berbeda, periksa Dokumentasi Pino.

Blok kode ini menunjukkan penggunaan Pino dalam aplikasi Express:

const mengungkapkan = memerlukan("cepat");
const aplikasi = ekspres();
const Pino = memerlukan('pino-http')()

aplikasi.gunakan (pino)

aplikasi.dapatkan("/", (req, res) => {
pino (req, res) // mencatat permintaan dan tanggapan
req.log.info('rute akar') // mencatat info tambahan
kirim ulang("Halo Dunia!");
});

aplikasi.dengarkan(3000, () => menghibur.catatan(`Aplikasi Dimulai`));

Kode ini menginisialisasi Pino dan mendaftarkannya sebagai middleware. Saat Anda membuat permintaan GET ke rute root (/), Pino mencatat detail permintaan Anda dan responsnya ke konsol.

4. Debug

Debug adalah paket logging untuk Node.js yang dimodelkan setelah teknik debugging inti Node.js. Ini memberikan solusi logging ringan yang memungkinkan Anda mengaktifkan atau menonaktifkan logging secara selektif tanpa mengubah kode, membuatnya mudah untuk men-debug dan memecahkan masalah.

Debug juga memungkinkan Anda menyetel ruang nama log, yang menyediakan struktur hierarki ke log Anda berdasarkan komponen dan modul dalam aplikasi Anda, membuatnya lebih mudah untuk memfilter dan mencarinya. Selain itu, Debug menawarkan berbagai tingkat pencatatan, seperti kesalahan, peringatan, dan info, yang dapat Anda gunakan untuk memprioritaskan dan memfilter log mereka.

Anda dapat menginstal Debug sebagai dependensi di direktori proyek Anda dengan perintah ini:

npm menginstal debug

Kode ini menunjukkan penggunaan Debug dalam aplikasi Express:

const mengungkapkan = memerlukan('cepat');

// Impor debug dan buat namespace
const men-debug = memerlukan('debug')('myapp: server');

const aplikasi = ekspres();
const port = process.env. PELABUHAN || 3000;

aplikasi.dapatkan('/', (req, res) => {
men-debug('Menerima permintaan untuk /');
kirim ulang('Halo Dunia!');
});

app.listen (port, () => {
men-debug(`Server mendengarkan di port ${port}`);
});

Kode membuat ruang nama, myapp: server. Ruang nama ini akan membedakan log yang terkait dengan “server” modul dari yang terkait dengan modul lain dengan namespace berbeda di aplikasi Anda.

Jalankan perintah ini untuk memulai debug:

DEBUG=myapp:* simpul server.js

Perintah di atas ini akan mencocokkan pesan log apa pun dengan namespace yang dimulai dengan aplikasi saya:. Jika Anda hanya ingin melihat log yang terkait dengan Anda server modul, Anda dapat mengatur DEBUG variabel lingkungan ke myapp: server.

Keuntungan lain dari Debug adalah kompatibilitasnya dengan paket logging lainnya, seperti Winston.

Memilih Paket Logging

Memilih paket logging adalah keputusan penting yang dapat berdampak signifikan pada efisiensi dan efektivitas proses debug Anda. Sangat penting untuk mempertimbangkan faktor-faktor seperti fitur dan kemampuan paketnya kompatibilitas dengan bahasa pemrograman dan lingkungan pengembangan Anda, serta kemudahan penggunaannya dan konfigurasi.

Pada akhirnya, pilihan paket logging akan bergantung pada kebutuhan dan persyaratan khusus proyek Anda.