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

    8.0.3 • 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

    Install

    npm i @wizbii/nest-bugsnag

    DownloadsWeekly Downloads

    120

    Version

    8.0.3

    License

    MIT

    Unpacked Size

    32.4 kB

    Total Files

    43

    Last publish

    Collaborators

    • squelix_wizbii
    • wizbii_admin