A powerful, pluggable TypeScript logger for Node.js applications.
Supports JSON, text, CEF, and Syslog formatting, multiple transport targets (console, file, HTTP, Elasticsearch), and auto-flush strategies for production-grade logging.
TRACE, DEBUG, INFO, WARN, ERROR, FATALJSONFormatter โ machine-readableTextFormatter โ human-friendlyCEFFormatter โ Common Event Format for SIEMSyslogFormatter โ Syslog-compatible formatConsoleTransportFileTransport, BufferedFileTransport, SmartFileTransportHTTPTransport, ElasticsearchTransportWorkerTransport โ offload to worker threadnpm install @sourceregistry/node-logger
import { Console, LogLevel } from '@sourceregistry/node-logger';
const logger = Console(LogLevel.DEBUG);
logger.info('App started');
logger.debug('Debugging details');
import { File } from '@sourceregistry/node-logger';
const fileLogger = File('./logs/app.log');
fileLogger.info('Writing to log file');
import { Elasticsearch } from '@sourceregistry/node-logger';
const esLogger = Elasticsearch({
endpoint: 'https://es.example.com/_bulk',
apiKey: 'your-api-key',
index: 'logs'
});
esLogger.error('Something went wrong!');
import { SmartFileTransport, Logger, LogLevel } from '@sourceregistry/node-logger';
const logger = new Logger(LogLevel.INFO, [
new SmartFileTransport('./logs/smart.log', undefined, LogLevel.INFO, {
enabled: true,
interval: 5000,
onSize: 50,
onLevel: LogLevel.ERROR,
onIdle: 10000
})
]);
// DEMONSTRATION:
logger.info('This will be buffered');
logger.debug('This will also be buffered');
// ... After 5 seconds, both logs auto-flush to disk
logger.error('This flushes immediately!'); // Because onLevel: ERROR
logger.warn('This will auto-flush based on smart rules'); // Because onLevel: WARNING
const taggedLogger = logger.withTags('auth', 'payment');
taggedLogger.info('User logged in');
process.on('SIGTERM', async () => {
await logger.close();
process.exit(0);
});
Apache-2.0
We welcome issues, feature requests, and pull requests!