Skip to content

gajus/roarr-fastify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

94c102d · Nov 14, 2022

History

16 Commits
Nov 30, 2021
Nov 14, 2022
Apr 6, 2022
Nov 30, 2021
Nov 30, 2021
Nov 30, 2021
Nov 30, 2021
Nov 30, 2021
Nov 30, 2021
Nov 30, 2021
Nov 30, 2021
Nov 30, 2021
Apr 6, 2022
Nov 30, 2021
Nov 30, 2021
Apr 6, 2022
Nov 30, 2021

Repository files navigation

Roarr Fastify

Travis build status Coveralls NPM version Canonical Code Style Twitter Follow

Roarr Fastify compatible logger.

Motivation

  • To have all logs produced using Roarr associated with the request ID.
  • To use a single logging mechanism for HTTP service and the rest of the application.

Usage

import {
  Roarr,
} from 'roarr';
import {
  createFastifyLogger,
} from '@roarr/fastify';
import createFastify from 'fastify';

const log = Roarr.child({
  program: 'your-program-name',
});

const app = createFastify({
  logger: createFastifyLogger(log),
});

/**
 * Uses {@link https://github.com/gajus/roarr#roarr-api-adopt|Roarr.adopt} to create an async_context
 * that adds `reqId` to all logs produced in request handlers.
 */
app.addHook('preHandler', (request, reply, done) => {
  void log.adopt(
    () => {
      done();
    },
    {
      requestId: request.id,
    },
  );
});

app.get('/', (request) => {
  // You can either explicitly retrieve logger from the request
  request.log.info('foo');
  // or you can just reference another Roarr instance.
  log.info('bar');
  // In both cases logs will include information about the HTTP request, i.e.
  // {"context":{"requestId":"req-1","program":"your-program-name","logLevel":30},"message":"foo"}
  // {"context":{"requestId":"req-1","program":"your-program-name","logLevel":30},"message":"bar"}
});

Configuration

If you have customized requestIdLogLabel setting in Fastify, then you also need to pass it to @roarr/fastify:

const app = createFastify({
  logger: createFastifyLogger(log, {
    requestIdLogLabel: 'requestId'
  }),
  requestIdLogLabel: 'requestId'
});