A tiny, intuitive, type-friendly logger for Node.js.
- Tiny. 2kB gzipped.
- Clean. Zero dependencies.
- Intuitive. Clear log prefix.
- Type-friendly. Written in TypeScript.
# with npm
npm add rslog
# with yarn
yarn add rslog
# with pnpm
pnpm add rslog
# with bun
bun add rslogRslog requires Node.js ^20.19.0 || >=22.12.0. If you are on Node 18, upgrade Node before using the package.
import { logger } from 'rslog';- Log:
// A gradient welcome log
logger.greet(`\n➜ Rslog v1.0.0\n`);
// Info
logger.info('This is a info message');
// Start
logger.start('This is a start message');
// Warn
logger.warn('This is a warn message');
// Ready
logger.ready('This is a ready message');
// Success
logger.success('This is a success message');
// Error
logger.error('This is a error message');
logger.error(new Error('This is a error message with stack'));
// Debug
logger.debug('This is a debug message');
// Same as console.log
logger.log('This is a log message');You can create a new logger instance through createLogger and specify the log level:
import { createLogger } from 'rslog';
const logger = createLogger({ level: 'warn' });
// Will print
logger.error('This is a error message');
logger.warn('This is a warn message');
// Will not print
logger.info('This is a info message');
logger.log('This is a log message');You can also directly modify the level attribute of the logger instance:
logger.level = 'verbose';The log levels of each method are as follows:
| Level | Method |
|---|---|
| silent | No log will be output |
| error | only error logs |
| warn | warn |
| info (log) | info, start, ready, success, log, greet |
| verbose | debug |
You can use logger.override to override some or all methods of the default logger.
import { logger } from 'rslog';
logger.override({
log: (message) => {
console.log(`[LOG] ${message}`);
},
info: (message) => {
console.log(`[INFO] ${message}`);
},
warn: (message) => {
console.log(`[WARN] ${message}`);
},
error: (message) => {
console.log(`[ERROR] ${message}`);
},
});You can read the original options passed to createLogger from logger.options:
import { createLogger } from 'rslog';
const logger = createLogger({
prefix: '[web]',
level: 'warn',
});
console.log(logger.options);
// { prefix: '[web]', level: 'warn' }You can also provide a custom console implementation when creating a logger:
import { Console } from 'node:console';
import { createWriteStream } from 'node:fs';
import { createLogger } from 'rslog';
const customConsole = new Console({
stdout: createWriteStream('./stdout.log'),
stderr: createWriteStream('./stderr.log'),
});
const logger = createLogger({
console: customConsole,
});You can prepend a fixed prefix to every log message:
import { createLogger } from 'rslog';
const logger = createLogger({
prefix: '[web]',
});
logger.info('server started');
// info [web] server startedYou can import color directly from rslog to style your own output:
It is a small wrapper around Node.js styleText, with a simpler API for common styling.
import { color, logger } from 'rslog';
logger.success(color.green('done'));
logger.info(color.bold(color.blue('build complete')));
logger.error(color.red('something went wrong'));Rslog supports Node.js ^20.19.0 || >=22.12.0.
Rslog is MIT licensed.
