@wizbii/nest-bugsnag
TypeScript icon, indicating that this package has built-in type declarations

10.0.0 • Public • Published

Nest Logo

A Nest module wrapper for bugsnag logger.

NPM Version License Download Build

Description

A Nest module wrapper for bugsnag-js logger.

Installation

$ yarn add @bugsnag/plugin-express
$ yarn add @wizbii/nest-bugsnag

Quick Start

Import the BugsnagModule into the module. For example AppModule:

import { Module } from '@nestjs/common';
import { BugsnagModule } from '@wizbii/nest-bugsnag';
import BugsnagPluginExpress from '@bugsnag/plugin-express';

@Module({
  imports: [
    BugsnagModule.forRoot({
      apiKey: '<API_KEY>',
      plugins: [BugsnagPluginExpress],
    }),
  ],
})
export class AppModule {}

In the main.ts file, change the HTTP platform to use express

// change
const app = await NestFactory.create(AppModule);
// to
const app = await NestFactory.create<NestExpressApplication>(AppModule);

This handles any errors that Express catches

app.get(BugsnagService).handleAnyErrors(app);

Then you can inject BugsnagService. Example:

import { Controller } from '@nestjs/common';
import { BugsnagService } from '@wizbii/nest-bugsnag';

@Controller('cats')
export class CatsController {
  constructor(private readonly logger: BugsnagService) {}
}

BugsnagService has instance property which wrap bugsnag client. So you can access it by calling:

try {
  something.risky();
} catch (e) {
  this.logger.instance.notify('message');
}

In your controller, you can call req.bugsnag.notify(err) which will include information about the request in the error report. For example:

 @Get()
 getHello(@Request() req): string {
     req.bugsnag.notify(
         new Error('First Error'),
         function (event) {
             // event.addMetadata('product', product)
         });
     return 'Hello World!';
 }

Note that BugsnagModule is a global module, it will be available in all you feature modules.

Async configuration Sample

import { Module } from '@nestjs/common';
import { BugsnagModule } from '@wizbii/nest-bugsnag';

@Module({
  imports: [
    BugsnagModule.forRootAsync({
      useFactory: (configService: ConfigService) => ({
        // options
      }),
      inject: [ConfigService],
    }),
  ],
})
export class AppModule {}

The factory might be async and is able to inject dependencies through the inject option.

Keywords

bugsnagJs, nestJs, logger

Readme

Keywords

Package Sidebar

Install

npm i @wizbii/nest-bugsnag

Weekly Downloads

2

Version

10.0.0

License

MIT

Unpacked Size

20.5 kB

Total Files

23

Last publish

Collaborators

  • wizbii_admin
  • squelix_wizbii