A powerful, pluggable TypeScript logger for Node.js applications.
Supports JSON, text, CEF, and Syslog formatting, multiple transport targets (console, file, HTTP, Splunk, Elasticsearch), and auto-flush strategies for production-grade logging.
- Log Levels:
TRACE,DEBUG,INFO,WARN,ERROR,FATAL - Formatters:
JSONFormatter– machine-readableTextFormatter– human-friendlyCEFFormatter– Common Event Format for SIEMSyslogFormatter– Syslog-compatible format
- Transports:
ConsoleTransportFileTransport,BufferedFileTransport,SmartFileTransportHTTPTransport,SplunkTransport,ElasticsearchTransportWorkerTransport– offload to worker thread
- Auto-flushing: Configurable by interval, size, severity, and idle timeout
- Tagging & Contextual Logging
- Asynchronous-safe, fault-tolerant design
npm install @sourceregistry/node-loggerimport { 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 { Splunk } from '@sourceregistry/node-logger';
const splunkLogger = Splunk({
endpoint: 'https://splunk.example.com:8088/services/collector/event',
token: 'your-splunk-token',
index: 'main'
});
splunkLogger.info('Logged to Splunk!');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!