diff --git a/.changeset/slick-dryers-cheat.md b/.changeset/slick-dryers-cheat.md new file mode 100644 index 0000000000..36e0fd6387 --- /dev/null +++ b/.changeset/slick-dryers-cheat.md @@ -0,0 +1,5 @@ +--- +"@human-protocol/logger": minor +--- + +Added ability to ignore logging from Nest.js contexts diff --git a/packages/libs/logger/README.md b/packages/libs/logger/README.md index 45dc2b0824..b093df31ea 100644 --- a/packages/libs/logger/README.md +++ b/packages/libs/logger/README.md @@ -85,6 +85,12 @@ import { NestLogger } from '@human-protocol/logger'; // initialize an overridden instance export const nestLoggerOverride = new NestLogger( defaultAppLogger.child({ name: 'NestLogger' }), + /** + * You may also want to disable logging from some noisy Nest.js contexts, + * e.g. app initialization logging. + * NOTE: it will disable logging on all levels for these contexts + */ + ['InstanceLoader', 'RouterExplorer', 'RoutesResolver'], ); diff --git a/packages/libs/logger/src/nest-logger.ts b/packages/libs/logger/src/nest-logger.ts index ca29a041a3..84762c0757 100644 --- a/packages/libs/logger/src/nest-logger.ts +++ b/packages/libs/logger/src/nest-logger.ts @@ -4,7 +4,10 @@ import type { LoggerService } from '@nestjs/common'; import { Logger, LogLevel, LogMeta } from './types'; class NestLogger implements LoggerService { - constructor(private readonly loggerInstance: Logger) {} + constructor( + private readonly loggerInstance: Logger, + readonly contextsToIgnore: string[] = [], + ) {} log(message: any, ...optionalParams: any[]) { // eslint-disable-next-line @typescript-eslint/no-unsafe-argument @@ -60,7 +63,7 @@ class NestLogger implements LoggerService { message: unknown, ...optionalParams: unknown[] ): void { - const logMeta: LogMeta = {}; + const logMeta: LogMeta & { context?: string } = {}; let params: unknown[] = []; // Nest always add "context" as last param @@ -74,6 +77,10 @@ class NestLogger implements LoggerService { } } + if (logMeta.context && this.contextsToIgnore.includes(logMeta.context)) { + return; + } + // Case when Nest logs something other than context if (params.length) { logMeta.messages = params;