A flexible and lightweight logger for Node.js with support for custom levels, bindings, child loggers, and external loggers like Pino.
npm install @vvlad1973/simple-logger
- Log levels: trace, debug, info, warn, error, fatal, silent
- Pretty-printed logs to console
- Optional bindings/context injection (e.g. userId, requestId)
- Optional msgPrefix
- Integration with external loggers (e.g. Pino) or logger factories
- Automatic detection of external logger .child() support
- Supports creating child loggers with merged context
- Function entry/exit logging
import SimpleLogger from '@vvlad1973/simple-logger';
const logger = new SimpleLogger(null, {
level: 'debug',
msgPrefix: '[MyApp]',
bindings: { service: 'auth' },
});
logger.debug('Debug message');
logger.info({ userId: 123 }, 'User logged in');
logger.warn('Something might be wrong');
logger.error('Something is wrong');
logger.fatal('System failure');
import pino from 'pino';
import SimpleLogger from '@vvlad1973/simple-logger';
const pinoLogger = pino({
level: 'info'
});
const logger = new SimpleLogger(pinoLogger, {
bindings: { component: 'api' },
msgPrefix: '[API]',
}); // this will create child logger with merged bindings
logger.info({ userId: 42 }, 'User fetched');
Or you can use a factory function:
import pino from 'pino';
import SimpleLogger from '@vvlad1973/simple-logger';
const logger = new SimpleLogger(pino, {
bindings: { component: 'api' },
msgPrefix: '[API]',
});
logger.info({ userId: 42 }, 'User fetched');
Creates a new logger instance.
Parameters:
-
externalLogger – optional:
- An existing logger instance (pino, winston, etc.)
- A factory function (e.g. pino)
-
options – optional:
- level: Logging level
- bindings: Default context
- msgPrefix: Prefix for messages
- transport: Optional transport (used if logger is a factory)
Sets the logging level.
Returns the current log level.
Replace the underlying logger with a new one and optionally provide options for bindings, prefix, etc.
Creates a child logger with merged bindings.
Logs the beginning of a function.
Logs the end of a function.
Each of the following is available as a method:
- trace
- debug
- info
- warn
- error
- fatal
- silent (noop)
Each method accepts:
logger.info(message: string, ...args: unknown[]);
logger.info(context: object, message?: string, ...args: unknown[]);
More details are available in the ./docs directory.
MIT License (including commercial use)
Vladislav Vnukovskiy <vvlad1973@gmail.com>