Complete Sentry integration (#1546)

This commit is contained in:
Charles Bochet
2023-09-11 15:07:30 -07:00
committed by GitHub
parent 35bcef5090
commit 7621854d4b
13 changed files with 164 additions and 67 deletions

View File

@ -15,53 +15,39 @@ export class SentryDriver implements LoggerService {
});
}
log(message: any, category: string) {
Sentry.addBreadcrumb({
message,
level: 'log',
data: {
category,
},
});
private logLevels = ['log', 'error', 'warning', 'debug', 'info'];
setLogLevels(levels: string[]) {
this.logLevels = levels;
}
error(message: any, category: string) {
Sentry.addBreadcrumb({
message,
level: 'error',
data: {
category,
},
});
log(message: any) {
if (this.logLevels.includes('log')) {
Sentry.captureMessage(message, { level: 'log' });
}
}
warn(message: any, category: string) {
Sentry.addBreadcrumb({
message,
level: 'error',
data: {
category,
},
});
error(message: any) {
if (this.logLevels.includes('error')) {
Sentry.captureMessage(message, { level: 'error' });
}
}
debug?(message: any, category: string) {
Sentry.addBreadcrumb({
message,
level: 'debug',
data: {
category,
},
});
warn(message: any) {
if (this.logLevels.includes('warn')) {
Sentry.captureMessage(message, { level: 'warning' });
}
}
verbose?(message: any, category: string) {
Sentry.addBreadcrumb({
message,
level: 'info',
data: {
category,
},
});
debug?(message: any) {
if (this.logLevels.includes('debug')) {
Sentry.captureMessage(message, { level: 'debug' });
}
}
verbose?(message: any) {
if (this.logLevels.includes('verbose')) {
Sentry.captureMessage(message, { level: 'info' });
}
}
}

View File

@ -1,14 +1,14 @@
import { LoggerType } from 'src/integrations/environment/interfaces/logger.interface';
import { LoggerDriver } from 'src/integrations/environment/interfaces/logger.interface';
export interface SentryDriverFactoryOptions {
type: LoggerType.Sentry;
type: LoggerDriver.Sentry;
options: {
sentryDNS: string;
};
}
export interface ConsoleDriverFactoryOptions {
type: LoggerType.Console;
type: LoggerDriver.Console;
options: null;
}

View File

@ -1,6 +1,6 @@
import { DynamicModule, Global, ConsoleLogger } from '@nestjs/common';
import { LoggerType } from 'src/integrations/environment/interfaces/logger.interface';
import { LoggerDriver } from 'src/integrations/environment/interfaces/logger.interface';
import { LoggerService } from './logger.service';
import { LoggerModuleOptions } from './interfaces';
@ -15,7 +15,7 @@ export class LoggerModule {
const provider = {
provide: LOGGER_DRIVER,
useValue:
options.type === LoggerType.Console
options.type === LoggerDriver.Console
? new ConsoleLogger()
: new SentryDriver(options.options),
};
@ -32,7 +32,7 @@ export class LoggerModule {
provide: LOGGER_DRIVER,
useFactory: async (...args: any[]) => {
const config = await options.useFactory(...args);
return config?.type === LoggerType.Console
return config?.type === LoggerDriver.Console
? new ConsoleLogger()
: new SentryDriver(config.options);
},

View File

@ -1,14 +1,15 @@
import {
Inject,
Injectable,
LoggerService as ConsoleLoggerService,
LogLevel,
LoggerService as LoggerServiceInterface,
} from '@nestjs/common';
import { LOGGER_DRIVER } from './logger.constants';
@Injectable()
export class LoggerService implements ConsoleLoggerService {
constructor(@Inject(LOGGER_DRIVER) private driver: ConsoleLoggerService) {}
export class LoggerService implements LoggerServiceInterface {
constructor(@Inject(LOGGER_DRIVER) private driver: LoggerServiceInterface) {}
log(message: any, category: string, ...optionalParams: any[]) {
this.driver.log.apply(this.driver, [message, category, ...optionalParams]);
@ -41,4 +42,8 @@ export class LoggerService implements ConsoleLoggerService {
...optionalParams,
]);
}
setLogLevels(levels: LogLevel[]) {
this.driver.setLogLevels?.apply(this.driver, [levels]);
}
}