0.0.16 • Published 3 years ago

@kirinus-digital/express-logger v0.0.16

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

express-logger

Implementation of an express.js logger using winston and express-winston.

Installation

yarn add @kirinus-digital/express-logger

Usage

import {
  createExpressWinstonHandler,
  createWinstonLogger,
  httpContextMiddleware,
  requestIdHandler,
} from '@kirinus-digital/express-logger';

Basic Example

index.ts:

import * as express from 'express';

import { init as loggerInit, logger } from './logger';

const app = express() as express.Application;
loggerInit(app);

const port = 3000;
app.listen(port, () => {
  logger.debug(`App: Listening on port ${port}!`);
});

logger/index.ts:

import { Application } from 'express';

import {
  WinstonLogger,
  createExpressWinstonHandler,
  createWinstonLogger,
  httpContextMiddleware,
  requestIdHandler,
} from '@kirinus-digital/express-logger';

export let logger: WinstonLogger;

export function init(app: Application): void {
  this.logger = createWinstonLogger('app');
  // Use express-winston for logging request information
  const expressWinstonHandler = createExpressWinstonHandler(this.logger);
  app.use(expressWinstonHandler);
  // Use express-http-context for context injection (request id)
  app.use(httpContextMiddleware);
  app.use(requestIdHandler);
}

/middleware/logger.middleware.ts:

import { NextFunction, Request, Response } from 'express';

import { logger } from '../logger';

export function loggerMiddleware(req: Request, _: Response, next: NextFunction): void {
  logger.debug(`${req.method} ${req.path}`);
  next();
}