UNPKG

@vitaly-yosef/node-smart-logger

Version:

Universal logger for Node.js applications with support for both ESM and CommonJS. It provides advanced features, such as structured logging in JSON format, integration with AWS CloudWatch Logs, and contextual logging.

54 lines (46 loc) 1.39 kB
// Graceful shutdown variables let isShuttingDown = false; let cloudWatchTransport: any = null; /** * Set CloudWatch transport for graceful shutdown * @param transport CloudWatch transport instance */ export function setCloudWatchTransport(transport: any): void { cloudWatchTransport = transport; } /** * Graceful shutdown function */ export async function shutdownLogger(): Promise<void> { if (isShuttingDown) { return; } isShuttingDown = true; // Flush any pending logs if (cloudWatchTransport) { try { // Wait for CloudWatch transport to flush await new Promise(resolve => { if (cloudWatchTransport && typeof cloudWatchTransport.kthxbye === 'function') { cloudWatchTransport.kthxbye(resolve); } else { resolve(null); } }); } catch (error) { console.error('Error flushing CloudWatch logs:', error); } } console.log('Logger shutdown complete'); } // Handle graceful shutdown process.on('SIGTERM', async () => { console.log('SIGTERM received, shutting down gracefully'); await shutdownLogger(); process.exit(0); }); process.on('SIGINT', async () => { console.log('SIGINT received, shutting down gracefully'); await shutdownLogger(); process.exit(0); });