@vvlad1973/simple-logger
TypeScript icon, indicating that this package has built-in type declarations

2.1.7 • Public • Published

@vvlad1973/simple-logger

A flexible and lightweight logger for Node.js with support for custom levels, bindings, child loggers, and external loggers like Pino.

Installation

npm install @vvlad1973/simple-logger

Features

  • 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

Usage

Basic usage

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');

Integration with Pino

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');

API

new SimpleLogger(externalLogger?: ExternalLogger | LoggerFactory, options?: LoggerOptions)

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)

logger.setLevel(level: LoggerLevel)

Sets the logging level.

logger.getLevel(): LoggerLevel

Returns the current log level.

logger.setExternalLogger(externalLogger, options?)

Replace the underlying logger with a new one and optionally provide options for bindings, prefix, etc.

logger.child(bindings: Record<string, unknown>): SimpleLogger

Creates a child logger with merged bindings.

logger.logFunctionStart(name?: string)

Logs the beginning of a function.

logger.logFunctionEnd(name?: string)

Logs the end of a function.

Logging methods

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[]);

Documentation

More details are available in the ./docs directory.

License

MIT License (including commercial use)

Author

Vladislav Vnukovskiy <vvlad1973@gmail.com>

/@vvlad1973/simple-logger/

    Package Sidebar

    Install

    npm i @vvlad1973/simple-logger

    Weekly Downloads

    15

    Version

    2.1.7

    License

    MIT with Commercial Use

    Unpacked Size

    365 kB

    Total Files

    57

    Last publish

    Collaborators

    • vvlad1973