An open API service indexing awesome lists of open source software.

https://github.com/alaricode/nestjs-rollbar

NestJS Rollbar package allows you to extend standard Logger to send errors directly to Rollbar
https://github.com/alaricode/nestjs-rollbar

Last synced: 3 months ago
JSON representation

NestJS Rollbar package allows you to extend standard Logger to send errors directly to Rollbar

Awesome Lists containing this project

README

        

# Rollbar Module for NestJS

![alt cover](https://github.com/AlariCode/nestjs-rollbar/raw/master/img/logo.jpg)

**More NestJS libs on [alariblog.ru](https://alariblog.ru)**

[![npm version](https://badgen.net/npm/v/nestjs-rollbar)](https://www.npmjs.com/package/nestjs-rollbar)
[![npm version](https://badgen.net/npm/license/nestjs-rollbar)](https://www.npmjs.com/package/nestjs-rollbar)
[![npm version](https://badgen.net/github/open-issues/AlariCode/nestjs-rollbar)](https://github.com/AlariCode/nestjs-rollbar/issues)
[![npm version](https://badgen.net/github/prs/AlariCode/nestjs-rollbar)](https://github.com/AlariCode/nestjs-rollbar/pulls)

NestJS Rollbar package allows you to extend standard Logger to send errors directly to Rollbar. Usage if quite simple. Get Rollbar Token from your project page and install nestjs-rollbar package:

```bash
npm i nestjs-rollbar
```

Then register module in your root app.module

```javascript
import { LoggerModule } from 'nestjs-rollbar';

@Module({
imports: [
// ...
LoggerModule.forRoot({
accessToken: configService.get('ROLLBAR_TOKEN'),
environment: configService.get('ENVIRONMENT'),
}),
],
})
export class AppModule {}
```

`forRoot` method uses RollBar NodeJS configuration interface

Or, using `forRootAsync`:
```
import { ConfigModule, ConfigService } from '@nestjs/config';
import { LoggerModule } from 'nestjs-rollbar';

@Module({
imports: [
// ...
LoggerModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (configService: ConfigService) => ({
accessToken: configService.get('ROLLBAR_TOKEN'),
environment: configService.get('ENVIRONMENT'),
}),
}),
],
})
export class AppModule {}
```

``` javascript
export interface Configuration {
accessToken?: string;
version?: string;
environment?: string;
codeVersion?: string;
code_version?: string;
scrubFields?: string[];
overwriteScrubFields?: boolean;
scrubHeaders?: string[];
logLevel?: Level;
reportLevel?: Level;
uncaughtErrorLevel?: Level;
endpoint?: string;
verbose?: boolean;
enabled?: boolean;
captureUncaught?: boolean;
captureUnhandledRejections?: boolean;
payload?: object;
maxItems?: number;
itemsPerMinute?: number;
ignoredMessages?: string[];
hostWhiteList?: string[];
hostBlackList?: string[];
filterTelemetry?: (e: TelemetryEvent) => boolean;
autoInstrument?: AutoInstrumentOptions;
maxTelemetryEvents?: number;
telemetryScrubber?: TelemetryScrubber;
includeItemsInTelemetry?: boolean;
scrubTelemetryInputs?: boolean;
sendConfig?: boolean;
captureEmail?: boolean;
captureUsername?: boolean;
captureIp?: boolean | "anonymize";
captureLambdaTimeouts?: boolean;
transform?: (data: object) => void;
checkIgnore?: (isUncaught: boolean, args: LogArgument[], item: object) => boolean;
onSendCallback?: (isUncaught: boolean, args: LogArgument[], item: object) => void;
}
```

To use RollbarLogger in any service or controller just inject it in constructor:

```javascript
import { RollbarLogger } from 'nestjs-rollbar';

constructor(
private readonly rollbarLogger: RollbarLogger
) {}
```

To log an error to Rollbar just call `error()` method:

```javascript
try {
throw new Error('Test error');
} catch (error) {
this.rollbarLogger.error(error, 'myMethod');
}
```

First parameter is an error object and the second - name of your method to show in logs.

## RollbarHandler decorator
If you want to automatically log error in controller or services method you can use RollbarHandler decorator.

```javascript
@Injectable()
export class AppService {

@RollbarHandler()
getHello() {
throw new Error('asda');
}
}
```

It will catch all errors in method and send them directly to Rollbar and print them in console. If you want to customize error name, pass it to decorator:

```javascript
@RollbarHandler({
errorName: 'My error name',
})
```

To rethrow error to another decorator:

```javascript
@RollbarHandler({
rethrow: true,
})
```