* - added sentry * - renamed env var * - logger driver * - add breadcrumb and category * - fix driver
50 lines
1.4 KiB
TypeScript
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],
|
|
};
|
|
}
|
|
}
|