Add Sentry for Backend (#1403)

* - added sentry

* - renamed env var

* - logger driver

* - add breadcrumb and category

* - fix driver
This commit is contained in:
brendanlaschke
2023-09-11 22:22:30 +03:00
committed by GitHub
parent 110d5eaa9d
commit 35bcef5090
15 changed files with 356 additions and 0 deletions

View File

@ -0,0 +1,49 @@
import { DynamicModule, Global, ConsoleLogger } from '@nestjs/common';
import { LoggerType } from 'src/integrations/environment/interfaces/logger.interface';
import { LoggerService } from './logger.service';
import { LoggerModuleOptions } from './interfaces';
import { LOGGER_DRIVER } from './logger.constants';
import { LoggerModuleAsyncOptions } from './logger.module-definition';
import { SentryDriver } from './drivers/sentry.driver';
@Global()
export class LoggerModule {
static forRoot(options: LoggerModuleOptions): DynamicModule {
const provider = {
provide: LOGGER_DRIVER,
useValue:
options.type === LoggerType.Console
? new ConsoleLogger()
: new SentryDriver(options.options),
};
return {
module: LoggerModule,
providers: [LoggerService, provider],
exports: [LoggerService],
};
}
static forRootAsync(options: LoggerModuleAsyncOptions): DynamicModule {
const provider = {
provide: LOGGER_DRIVER,
useFactory: async (...args: any[]) => {
const config = await options.useFactory(...args);
return config?.type === LoggerType.Console
? new ConsoleLogger()
: new SentryDriver(config.options);
},
inject: options.inject || [],
};
return {
module: LoggerModule,
imports: options.imports || [],
providers: [LoggerService, provider],
exports: [LoggerService],
};
}
}