From fb2ff7dfb0fa25a2c12525fbea138668e7ad9aa9 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Thu, 18 Mar 2021 13:43:11 +0100 Subject: [PATCH] Provide useful logging in the IndexBuilder. Signed-off-by: Eric Peterson --- packages/backend/src/plugins/search.ts | 2 +- plugins/search-backend-node/package.json | 3 ++- .../search-backend-node/src/IndexBuilder.ts | 23 ++++++++++++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/packages/backend/src/plugins/search.ts b/packages/backend/src/plugins/search.ts index 671f4ea55e..7bd473756d 100644 --- a/packages/backend/src/plugins/search.ts +++ b/packages/backend/src/plugins/search.ts @@ -23,7 +23,7 @@ export default async function createPlugin({ logger, discovery, }: PluginEnvironment) { - const indexBuilder = new IndexBuilder(); + const indexBuilder = new IndexBuilder({ logger }); indexBuilder.addCollator({ type: 'software-catalog', diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 381c6baf7d..045cfb130c 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -19,7 +19,8 @@ "clean": "backstage-cli clean" }, "dependencies": { - "@backstage/search-common": "^0.1.1" + "@backstage/search-common": "^0.1.1", + "winston": "^3.2.1" }, "devDependencies": { "@backstage/cli": "^0.6.0" diff --git a/plugins/search-backend-node/src/IndexBuilder.ts b/plugins/search-backend-node/src/IndexBuilder.ts index 2ec3cdc951..43bf84a59d 100644 --- a/plugins/search-backend-node/src/IndexBuilder.ts +++ b/plugins/search-backend-node/src/IndexBuilder.ts @@ -15,6 +15,7 @@ */ import { DocumentCollator, DocumentDecorator } from '@backstage/search-common'; +import { Logger } from 'winston'; import { RegisterCollatorParameters, RegisterDecoratorParameters, @@ -25,13 +26,19 @@ interface CollatorEnvelope { refreshInterval: number; } +type IndexBuilderOptions = { + logger: Logger; +}; + export class IndexBuilder { private collators: Record; private decorators: Record; + private logger: Logger; - constructor() { + constructor({ logger }: IndexBuilderOptions) { this.collators = {}; this.decorators = {}; + this.logger = logger; } /** @@ -43,6 +50,9 @@ export class IndexBuilder { collator, defaultRefreshIntervalSeconds, }: RegisterCollatorParameters): void { + this.logger.info( + `Added ${collator.constructor.name} collator for type ${type}`, + ); this.collators[type] = { refreshInterval: defaultRefreshIntervalSeconds, collate: collator, @@ -58,6 +68,11 @@ export class IndexBuilder { types = ['*'], decorator, }: RegisterDecoratorParameters): void { + this.logger.info( + `Added decorator ${decorator.constructor.name} to types ${types.join( + ', ', + )}`, + ); types.forEach(type => { if (this.decorators.hasOwnProperty(type)) { this.decorators[type].push(decorator); @@ -80,8 +95,14 @@ export class IndexBuilder { this.decorators['*'] || [] ).concat(this.decorators[type] || []); + this.logger.info( + `Collating documents for ${type} via ${this.collators[type].collate.constructor.name}`, + ); let documents = await this.collators[type].collate.execute(); for (let i = 0; i < decorators.length; i++) { + this.logger.info( + `Decorating ${type} documents via ${decorators[i].constructor.name}`, + ); documents = await decorators[i].execute(documents); }