Noticeably Playful Monkeys


    2.3.0 • Public • Published


    Simple console logger that outputs json in prod and pretty messages on dev


    npm install --save @5app/logger
    const logger = require('@5app/logger');'An email was sent', {
      email: '',
      template: 'template1',
    logger.error(new Error('Unknown playlist 123'));


    The logger can optionally be customised using the following environment variables:

    • LOGS_FORMAT: if set to json, the logger will log messages in json format instead of pretty messages (default behaviour).
    • LOGS_LEVEL: minimum logging level, by default it will be debug. Accepted values are 'debug', 'info', 'warn', and 'error'
    • TAG: release tag (e.g. docker image tag) to be added to the log messages

    Logging levels

    Logging levels are (from lower to higher priority): 'debug', 'info', 'warn', and 'error'. The logger provides the logging functions with the following signatures: logger.<level>(message, objectOrError)

    Here is an example of how the logger can be used:

    logger.error('An error happened', new ApiError('The api call failed', 404)); // will log the message, the error message, the stack trace, and the statusCode error property
    logger.warn('Be warned', {a: 1, b:, c: 'some string'});'An event happened', {a: 1, b:, c: 'some string'});
    logger.debug('A minor operation', {a: 1, b:, c: 'some string'});

    Fetching context dynamically

    In addition to providing a context object, you can also use logger.addContext to provide a function which will be called on every log to get a context object.

    This can be helpful if you are using async_hooks or cls-hooked to store request metadata similarly to thread-local storage.

    For instance, you can do the following without having to explicitly pass the correlationId to each log:

    const asyncLocalStorage = new AsyncLocalStorage();
    expressApp.use((req, res, next) {
      const correlationId = req.get('X-Correlation-Id') || uuidV4();{correlationId}, () => next());
    logger.addContext(() => asyncLocalStorage.getStore());'User profile updated', {userId: 1234});

    And the output will look like:




    npm i @5app/logger

    DownloadsWeekly Downloads






    Unpacked Size

    15.1 kB

    Total Files


    Last publish


    • adodson
    • diondiondion
    • ikhemissi
    • charles5app
    • 5app-bot