Files
twenty_crm/server/src/integrations/logger/logger.module.ts
brendanlaschke 35bcef5090 Add Sentry for Backend (#1403)
* - added sentry

* - renamed env var

* - logger driver

* - add breadcrumb and category

* - fix driver
2023-09-11 12:22:30 -07:00

50 lines
1.4 KiB
TypeScript

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],
};
}
}