nodejs-log-agent
v1.0.2
Published
Modul Node.js untuk menyimpan log.
Maintainers
Readme
NodeJS Log Agent
nodejs-log-agent adalah modul logging komprehensif untuk aplikasi Node.js yang menyediakan penanganan log terpusat, layanan heartbeat, dan penanganan proses untuk graceful shutdown dan error handling global. Modul ini dirancang untuk menyederhanakan pelaporan status aplikasi dan informasi diagnostik.
Fitur
Logging Terstruktur: Memungkinkan log dengan level
info,warn, danerrordengan format JSON yang terstruktur untuk kemudahan analisis.Heartbeat Service: Mengirimkan log
HEARTBEATsecara berkala untuk memverifikasi bahwa layanan backend berfungsi dengan baik.Global Error Handling: Menginisialisasi listener untuk menangani exception yang tidak tertangkap (
uncaughtException) dan penolakan promise yang tidak tertangkap (unhandledRejection), memastikan aplikasi tidak crash secara tiba-tiba dan log kesalahan tercatat.Graceful Shutdown: Menangani sinyal proses seperti
SIGTERMdanSIGINTuntuk memungkinkan aplikasi membersihkan sumber daya dengan benar sebelum shutdown.
Instalasi
Untuk menginstal nodejs-log-agent, gunakan npm:
npm i nodejs-log-agentPenggunaan
Modul ini menyediakan fungsionalitas logging inti, layanan heartbeat, dan inisialisasi penanganan proses.
Contoh app.js
Berikut adalah contoh bagaimana Anda dapat mengintegrasikan nodejs-log-agent ke dalam aplikasi Node.js Anda:
const { logger, heartbeatService, initializeProcessHandlers } = require('nodejs-log-agent');
const express = require('express'); // Contoh penggunaan Express
const app = express();
const port = process.env.PORT || 3000;
// --- Inisialisasi Penanganan Error Global Aplikasi dan Graceful Shutdown ---
// Panggil fungsi inisialisasi dari modul untuk mengaktifkan penanganan proses.
// Ini harus dipanggil sekali di awal aplikasi Anda.
initializeProcessHandlers(logger, heartbeatService);
// Contoh Route Sederhana
app.get('/', (req, res) => {
logger.info('HOME_PAGE_ACCESS', { ip: req.ip, userAgent: req.headers['user-agent'], message: 'Home page accessed.' });
res.send('Welcome to NodeJS Log Agent example!');
});
// Contoh Route untuk Mensimulasikan Error
app.get('/simulate-error', (req, res) => {
try {
// Simulasi error sinkron
throw new Error('This is a simulated synchronous error!');
} catch (err) {
logger.error('SIMULATED_SYNC_ERROR_CAUGHT', {
message: err.message,
stack: err.stack,
endpoint: '/simulate-error',
context: 'Error sinkron tertangkap secara lokal.'
});
res.status(500).send('Simulated synchronous error caught and logged.');
}
});
// Contoh Route untuk Mensimulasikan Warning
app.get('/simulate-warning', (req, res) => {
logger.warn('SIMULATING_WARNING', { endpoint: '/simulate-warning', message: 'This is a simulated warning.' });
res.status(200).send('Simulated warning logged.');
});
app.listen(port, () => {
logger.info('APPLICATION_LISTENING', { message: `Backend server berjalan di http://localhost:${port}` });
// Mulai layanan heartbeat setelah server mendengarkan
heartbeatService.start();
});
// Contoh: Mensimulasikan unhandledRejection setelah beberapa detik (misalnya dari promise yang gagal)
setTimeout(() => {
Promise.reject(new Error('This is an unhandled promise rejection!'));
}, 5000);
// Contoh: Mensimulasikan uncaughtException setelah beberapa detik
setTimeout(() => {
// throw new Error('This is an uncaught exception!'); // Aktifkan ini untuk menguji uncaughtException
}, 10000);
Fungsi Logging
Modul ini menyediakan metode logging yang mudah digunakan:
logger.info(code, data)
Digunakan untuk mencatat informasi umum atau kejadian penting dalam aplikasi.
code(string): Kode identifikasi unik untuk jenis log (misalnya,APPLICATION_STARTED,REQUEST_SUCCESS).data(object): Objek yang berisi data relevan terkait log, seperti pesan, parameter, atau hasil operasi.
Contoh:
logger.info('APPLICATION_LISTENING', { message: `Backend server berjalan di http://localhost:${port}` });
logger.warn(code, data)
Digunakan untuk mencatat peringatan yang menunjukkan potensi masalah atau situasi yang tidak ideal, namun tidak menyebabkan kegagalan aplikasi.
code(string): Kode identifikasi unik untuk jenis peringatan.data(object): Objek yang berisi data relevan terkait peringatan.
Contoh:
logger.warn('SIMULATING_WARNING', { endpoint: '/simulate-error', message: 'This is a simulated warning.' });
logger.error(code, data)
Digunakan untuk mencatat kesalahan fatal atau exception yang memerlukan perhatian.
code(string): Kode identifikasi unik untuk jenis kesalahan.data(object): Objek yang berisi data kesalahan, sepertimessage,stack trace, dan konteks tambahan.
Contoh:
logger.error('SIMULATED_SYNC_ERROR_CAUGHT', {
message: err.message,
stack: err.stack,
endpoint: '/simulate-error',
context: 'Error sinkron tertangkap secara lokal.'
});
Dengan nodejs-log-agent, Anda dapat mengelola log aplikasi Anda dengan lebih efisien, memastikan visibilitas yang lebih baik terhadap status dan kesehatan sistem Anda.
