@minddocdev/nest-express-winston
TypeScript icon, indicating that this package has built-in type declarations

0.2.0 • Public • Published

nest-express-winston

Implementation of a NestJS logger using winston and express-winston. It replaces the default NestJS logger with winston, and optionally also adds express logs using express-winston.

Getting Started

yarn install
yarn build
yarn test

Installation

yarn add @minddocdev/nest-express-winston

If it does not exist, add a .yarnrc file to the root of your project with the following content:

"@minddocdev:registry" "https://npm.pkg.github.com"

Ensure you are logged in to github using a personal access token with delete:packages, read:packages, repo, write:packages privileges as the password:

npm login --registry=https://npm.pkg.github.com

Publishing

To publish a new version of the package, firstly bump the version in the package.json file, then cut a new release on Github. This will automatically initiate the publish Github Action workflow and publish a new version to Github Packages

Guide

import {
  createExpressWinstonHandler,
  createNestWinstonLogger,
  httpContextMiddleware,
  requestIdHandler,
} from '@minddocdev/nest-express-winston';

Basic Example

Add the following to your index.ts / main.ts:

import 'dotenv/config';
import 'module-alias/register';
import 'reflect-metadata';

import { ValidationPipe } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';

import {
  createExpressWinstonHandler,
  createNestWinstonLogger,
  httpContextMiddleware,
  requestIdHandler,
} from '@minddocdev/nest-express-winston';

import { AppModule } from './app.module';
import { EnvService } from './env';

async function bootstrap() {
  const nestWinstonLogger = createNestWinstonLogger('app');
  const app = await NestFactory.create(AppModule, { logger: nestWinstonLogger });

  // Use express-winston for logging request information
  const expressWinstonHandler = createExpressWinstonHandler(nestWinstonLogger.logger);
  app.use(expressWinstonHandler);

  // Use express-http-context for context injection (request id)
  app.use(httpContextMiddleware);
  app.use(requestIdHandler);

  app.useGlobalPipes(new ValidationPipe());
  app.setGlobalPrefix(EnvService.get().API_BASE_PATH);

  const options = new DocumentBuilder()
    .setTitle('API')
    .setDescription('Logging API Example')
    .setVersion('1.0')
    .build();
  const document = SwaggerModule.createDocument(app, options);
  SwaggerModule.setup('api', app, document);

  await app.listen(EnvService.get().API_PORT, EnvService.get().API_HOST);
}
bootstrap();

Contribution Guidelines

Never commit directly to master, create a new branch and submit a pull request.

Package Sidebar

Install

npm i @minddocdev/nest-express-winston

Weekly Downloads

1

Version

0.2.0

License

MIT

Unpacked Size

433 kB

Total Files

31

Last publish

Collaborators

  • darioblanco