slf
v2.1.0
Published
Simple Logging Facade
Downloads
37,875
Maintainers
Readme
slf
Simple Logging Facade for Node.js applications.
Install
npm install slfQuick start
import { ConsoleLogger, LoggerFactory } from 'slf';
LoggerFactory.setFactory(ConsoleLogger);
const log = LoggerFactory.getLogger('app:startup');
log.info('Boot complete');
log.warn('Configuration is missing optional key: %s', 'featureX');Log levels
Available levels:
debuginfowarnerrorcritical
Set a minimum level when configuring the factory:
import { ConsoleLogger, Level, LoggerFactory } from 'slf';
LoggerFactory.setFactory(ConsoleLogger, Level.Info);Or set the level via environment variable:
SLF_LOG_LEVEL=debugSupported values should be lower case: debug, info, warn, error, critical.
Logger API
Create a logger:
import { LoggerFactory } from 'slf';
const log = LoggerFactory.getLogger('service:payments');Write logs:
log.debug('Debug message');
log.info('Info message');
log.warn('Warn message');
log.error('Error message');Generic method:
log.log('warn', 'Low disk space: %d%%', 9);
log.log('This defaults to info');Middleware
You can intercept and modify log events:
import { LoggerFactory } from 'slf';
const prefix = (event, next) => {
event.params = ['[my-service]', ...event.params];
next(null, event);
};
LoggerFactory.use(prefix);
LoggerFactory.use(prefix); // The same function is registered only once.
LoggerFactory.remove(prefix); // Returns true when removed, false if not registered.Writing a custom driver
A factory receives one or more events:
import { Event, LoggerFactory } from 'slf';
const customFactory = (...events: Event[]) => {
for (const event of events) {
// send event to your logging backend
}
};
LoggerFactory.setFactory(customFactory);Each event has:
name: logger namelevel: lowercase log level stringparams: original log argumentstimeStamp: epoch milliseconds
