diff --git a/.changeset/gentle-crabs-cover.md b/.changeset/gentle-crabs-cover.md new file mode 100644 index 0000000000..ff25bcb16f --- /dev/null +++ b/.changeset/gentle-crabs-cover.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-backend': minor +'@backstage/plugin-tech-insights-node': minor +--- + +**BREAKING** Winston logger has been replaced with `LoggerService` diff --git a/.changeset/many-pears-drop.md b/.changeset/many-pears-drop.md new file mode 100644 index 0000000000..f2557c84a1 --- /dev/null +++ b/.changeset/many-pears-drop.md @@ -0,0 +1,47 @@ +--- +'@backstage/plugin-search-backend-module-stack-overflow-collator': patch +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +'@backstage/plugin-catalog-backend-module-bitbucket-server': patch +'@backstage/plugin-tech-insights-backend-module-jsonfc': patch +'@backstage/plugin-catalog-backend-module-github-org': patch +'@backstage/plugin-scaffolder-backend-module-github': patch +'@backstage/plugin-catalog-backend-module-puppetdb': patch +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-search-backend-module-techdocs': patch +'@backstage/plugin-catalog-backend-module-gerrit': patch +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-catalog-backend-module-gitlab': patch +'@backstage/plugin-search-backend-module-explore': patch +'@backstage/plugin-catalog-backend-module-azure': patch +'@backstage/plugin-catalog-backend-module-aws': patch +'@backstage/plugin-catalog-backend-module-gcp': patch +'@backstage/plugin-entity-feedback-backend': patch +'@backstage/plugin-code-coverage-backend': patch +'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-azure-sites-backend': patch +'@backstage/plugin-search-backend-node': patch +'@backstage/plugin-lighthouse-backend': patch +'@backstage/plugin-permission-backend': patch +'@backstage/plugin-sonarqube-backend': patch +'@backstage/backend-app-api': patch +'@backstage/plugin-airbrake-backend': patch +'@backstage/plugin-devtools-backend': patch +'@backstage/plugin-linguist-backend': patch +'@backstage/plugin-periskop-backend': patch +'@backstage/plugin-playlist-backend': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-explore-backend': patch +'@backstage/plugin-jenkins-backend': patch +'@backstage/backend-tasks': patch +'@backstage/plugin-badges-backend': patch +'@backstage/plugin-bazaar-backend': patch +'@backstage/plugin-search-backend': patch +'@backstage/plugin-kafka-backend': patch +'@backstage/plugin-nomad-backend': patch +'@backstage/plugin-todo-backend': patch +'@backstage/plugin-adr-backend': patch +'@backstage/plugin-app-backend': patch +--- + +Replaced winston logger with `LoggerService` diff --git a/packages/backend-app-api/src/services/implementations/scheduler/schedulerServiceFactory.ts b/packages/backend-app-api/src/services/implementations/scheduler/schedulerServiceFactory.ts index 4dfe567ccc..dc9b3a9864 100644 --- a/packages/backend-app-api/src/services/implementations/scheduler/schedulerServiceFactory.ts +++ b/packages/backend-app-api/src/services/implementations/scheduler/schedulerServiceFactory.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createServiceFactory, @@ -33,7 +32,7 @@ export const schedulerServiceFactory = createServiceFactory({ return TaskScheduler.forPlugin({ pluginId: plugin.getId(), databaseManager, - logger: loggerToWinstonLogger(logger), + logger, }); }, }); diff --git a/packages/backend-app-api/src/services/implementations/urlReader/urlReaderServiceFactory.ts b/packages/backend-app-api/src/services/implementations/urlReader/urlReaderServiceFactory.ts index 6da71ac0fc..7f404a24b1 100644 --- a/packages/backend-app-api/src/services/implementations/urlReader/urlReaderServiceFactory.ts +++ b/packages/backend-app-api/src/services/implementations/urlReader/urlReaderServiceFactory.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { loggerToWinstonLogger, UrlReaders } from '@backstage/backend-common'; +import { UrlReaders } from '@backstage/backend-common'; import { coreServices, createServiceFactory, @@ -30,7 +30,7 @@ export const urlReaderServiceFactory = createServiceFactory({ async factory({ config, logger }) { return UrlReaders.default({ config, - logger: loggerToWinstonLogger(logger), + logger, }); }, }); diff --git a/packages/backend-tasks/api-report.md b/packages/backend-tasks/api-report.md index 417fc93ed4..00ef28c9ce 100644 --- a/packages/backend-tasks/api-report.md +++ b/packages/backend-tasks/api-report.md @@ -8,7 +8,7 @@ import { Duration } from 'luxon'; import { HumanDuration as HumanDuration_2 } from '@backstage/types'; import { JsonObject } from '@backstage/types'; import { LegacyRootDatabaseService } from '@backstage/backend-common'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginDatabaseManager } from '@backstage/backend-common'; // @public @deprecated @@ -83,20 +83,23 @@ export interface TaskScheduleDefinitionConfig { // @public export class TaskScheduler { - constructor(databaseManager: LegacyRootDatabaseService, logger: Logger); + constructor( + databaseManager: LegacyRootDatabaseService, + logger: LoggerService, + ); forPlugin(pluginId: string): PluginTaskScheduler; // (undocumented) static forPlugin(opts: { pluginId: string; databaseManager: PluginDatabaseManager; - logger: Logger; + logger: LoggerService; }): PluginTaskScheduler; // (undocumented) static fromConfig( config: Config, options?: { databaseManager?: LegacyRootDatabaseService; - logger?: Logger; + logger?: LoggerService; }, ): TaskScheduler; } diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index d2a0e33c73..88de270fca 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -33,6 +33,7 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/config": "workspace:^", "@backstage/errors": "workspace:^", "@backstage/types": "workspace:^", @@ -43,7 +44,6 @@ "lodash": "^4.17.21", "luxon": "^3.0.0", "uuid": "^9.0.0", - "winston": "^3.2.1", "zod": "^3.22.4" }, "devDependencies": { diff --git a/packages/backend-tasks/src/tasks/LocalTaskWorker.ts b/packages/backend-tasks/src/tasks/LocalTaskWorker.ts index 347d22e48e..e79acb35f0 100644 --- a/packages/backend-tasks/src/tasks/LocalTaskWorker.ts +++ b/packages/backend-tasks/src/tasks/LocalTaskWorker.ts @@ -17,9 +17,9 @@ import { ConflictError } from '@backstage/errors'; import { CronTime } from 'cron'; import { DateTime, Duration } from 'luxon'; -import { Logger } from 'winston'; import { TaskFunction, TaskSettingsV2 } from './types'; import { delegateAbortController, sleep } from './util'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Implements tasks that run locally without cross-host collaboration. @@ -32,7 +32,7 @@ export class LocalTaskWorker { constructor( private readonly taskId: string, private readonly fn: TaskFunction, - private readonly logger: Logger, + private readonly logger: LoggerService, ) {} start(settings: TaskSettingsV2, options?: { signal?: AbortSignal }) { diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts index 38561c7a8c..b1647f4edf 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts @@ -16,20 +16,20 @@ import { Knex } from 'knex'; import { Duration } from 'luxon'; -import { Logger } from 'winston'; import { LocalTaskWorker } from './LocalTaskWorker'; import { TaskWorker } from './TaskWorker'; import { PluginTaskScheduler, TaskDescriptor, + TaskFunction, TaskInvocationDefinition, TaskRunner, TaskScheduleDefinition, TaskSettingsV2, } from './types'; import { validateId } from './util'; -import { TaskFunction } from './types'; -import { metrics, Counter, Histogram } from '@opentelemetry/api'; +import { Counter, Histogram, metrics } from '@opentelemetry/api'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Implements the actual task management. @@ -43,7 +43,7 @@ export class PluginTaskSchedulerImpl implements PluginTaskScheduler { constructor( private readonly databaseFactory: () => Promise, - private readonly logger: Logger, + private readonly logger: LoggerService, ) { const meter = metrics.getMeter('default'); this.counter = meter.createCounter('backend_tasks.task.runs.count', { diff --git a/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts index f69b7d9b88..7b6becab91 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts @@ -16,9 +16,9 @@ import { Knex } from 'knex'; import { Duration } from 'luxon'; -import { Logger } from 'winston'; -import { DbTasksRow, DB_TASKS_TABLE } from '../database/tables'; +import { DB_TASKS_TABLE, DbTasksRow } from '../database/tables'; import { sleep } from './util'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Makes sure to auto-expire and clean up things that time out or for other @@ -27,12 +27,12 @@ import { sleep } from './util'; export class PluginTaskSchedulerJanitor { private readonly knex: Knex; private readonly waitBetweenRuns: Duration; - private readonly logger: Logger; + private readonly logger: LoggerService; constructor(options: { knex: Knex; waitBetweenRuns: Duration; - logger: Logger; + logger: LoggerService; }) { this.knex = options.knex; this.waitBetweenRuns = options.waitBetweenRuns; diff --git a/packages/backend-tasks/src/tasks/TaskScheduler.ts b/packages/backend-tasks/src/tasks/TaskScheduler.ts index bd7bf0f776..672c52cc10 100644 --- a/packages/backend-tasks/src/tasks/TaskScheduler.ts +++ b/packages/backend-tasks/src/tasks/TaskScheduler.ts @@ -23,11 +23,11 @@ import { import { Config } from '@backstage/config'; import { once } from 'lodash'; import { Duration } from 'luxon'; -import { Logger } from 'winston'; import { migrateBackendTasks } from '../database/migrateBackendTasks'; import { PluginTaskSchedulerImpl } from './PluginTaskSchedulerImpl'; import { PluginTaskSchedulerJanitor } from './PluginTaskSchedulerJanitor'; import { PluginTaskScheduler } from './types'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Deals with the scheduling of distributed tasks. @@ -39,7 +39,7 @@ export class TaskScheduler { config: Config, options?: { databaseManager?: LegacyRootDatabaseService; - logger?: Logger; + logger?: LoggerService; }, ): TaskScheduler { const databaseManager = @@ -52,7 +52,7 @@ export class TaskScheduler { constructor( private readonly databaseManager: LegacyRootDatabaseService, - private readonly logger: Logger, + private readonly logger: LoggerService, ) {} /** @@ -72,7 +72,7 @@ export class TaskScheduler { static forPlugin(opts: { pluginId: string; databaseManager: PluginDatabaseManager; - logger: Logger; + logger: LoggerService; }): PluginTaskScheduler { const databaseFactory = once(async () => { const knex = await opts.databaseManager.getClient(); diff --git a/packages/backend-tasks/src/tasks/TaskWorker.ts b/packages/backend-tasks/src/tasks/TaskWorker.ts index fe327b38d6..57cbf2203e 100644 --- a/packages/backend-tasks/src/tasks/TaskWorker.ts +++ b/packages/backend-tasks/src/tasks/TaskWorker.ts @@ -19,10 +19,10 @@ import { CronTime } from 'cron'; import { Knex } from 'knex'; import { DateTime, Duration } from 'luxon'; import { v4 as uuid } from 'uuid'; -import { Logger } from 'winston'; -import { DbTasksRow, DB_TASKS_TABLE } from '../database/tables'; +import { DB_TASKS_TABLE, DbTasksRow } from '../database/tables'; import { TaskFunction, TaskSettingsV2, taskSettingsV2Schema } from './types'; import { delegateAbortController, nowPlus, sleep } from './util'; +import { LoggerService } from '@backstage/backend-plugin-api'; const DEFAULT_WORK_CHECK_FREQUENCY = Duration.fromObject({ seconds: 5 }); @@ -36,7 +36,7 @@ export class TaskWorker { private readonly taskId: string, private readonly fn: TaskFunction, private readonly knex: Knex, - private readonly logger: Logger, + private readonly logger: LoggerService, private readonly workCheckFrequency: Duration = DEFAULT_WORK_CHECK_FREQUENCY, ) {} diff --git a/plugins/adr-backend/api-report.md b/plugins/adr-backend/api-report.md index 9b00888435..bd8859fe69 100644 --- a/plugins/adr-backend/api-report.md +++ b/plugins/adr-backend/api-report.md @@ -15,7 +15,7 @@ import { Config } from '@backstage/config'; import { DocumentCollatorFactory } from '@backstage/plugin-search-common'; import { Entity } from '@backstage/catalog-model'; import express from 'express'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginCacheManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { Readable } from 'stream'; @@ -29,7 +29,7 @@ export type AdrCollatorFactoryOptions = { config: Config; catalogClient?: CatalogApi; discovery: PluginEndpointDiscovery; - logger: Logger; + logger: LoggerService; parser?: AdrParser; reader: UrlReader; tokenManager: TokenManager; @@ -54,7 +54,7 @@ export default adrPlugin; export type AdrRouterOptions = { reader: UrlReader; cacheClient: CacheClient; - logger: Logger; + logger: LoggerService; }; // @public diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index ace39cf785..58bc794fd7 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -43,7 +43,6 @@ "luxon": "^3.0.0", "marked": "^12.0.0", "node-fetch": "^2.6.5", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/adr-backend/src/plugin.ts b/plugins/adr-backend/src/plugin.ts index f926ade6be..bf5c69047f 100644 --- a/plugins/adr-backend/src/plugin.ts +++ b/plugins/adr-backend/src/plugin.ts @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -38,7 +37,7 @@ export const adrPlugin = createBackendPlugin({ async init({ httpRouter, logger, reader, cache }) { httpRouter.use( await createRouter({ - logger: loggerToWinstonLogger(logger), + logger, reader, cacheClient: cache, }), diff --git a/plugins/adr-backend/src/search/DefaultAdrCollatorFactory.ts b/plugins/adr-backend/src/search/DefaultAdrCollatorFactory.ts index 21aa7f32a4..5e1c81220d 100644 --- a/plugins/adr-backend/src/search/DefaultAdrCollatorFactory.ts +++ b/plugins/adr-backend/src/search/DefaultAdrCollatorFactory.ts @@ -15,19 +15,18 @@ */ import { Readable } from 'stream'; -import { Logger } from 'winston'; import { CacheClient, + createLegacyAuthAdapters, PluginCacheManager, PluginEndpointDiscovery, TokenManager, UrlReader, - createLegacyAuthAdapters, } from '@backstage/backend-common'; import { + CATALOG_FILTER_EXISTS, CatalogApi, CatalogClient, - CATALOG_FILTER_EXISTS, } from '@backstage/catalog-client'; import { stringifyEntityRef } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; @@ -47,7 +46,7 @@ import { DocumentCollatorFactory } from '@backstage/plugin-search-common'; import { createMadrParser } from './createMadrParser'; import { AdrParser } from './types'; -import { AuthService } from '@backstage/backend-plugin-api'; +import { AuthService, LoggerService } from '@backstage/backend-plugin-api'; /** * Options to configure the AdrCollatorFactory @@ -78,7 +77,7 @@ export type AdrCollatorFactoryOptions = { /** * Logger */ - logger: Logger; + logger: LoggerService; /** * ADR content parser. Defaults to built in MADR parser. */ @@ -106,7 +105,7 @@ export class DefaultAdrCollatorFactory implements DocumentCollatorFactory { private readonly adrFilePathFilterFn: AdrFilePathFilterFn; private readonly cacheClient: CacheClient; private readonly catalogClient: CatalogApi; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly parser: AdrParser; private readonly reader: UrlReader; private readonly auth: AuthService; diff --git a/plugins/adr-backend/src/service/router.test.ts b/plugins/adr-backend/src/service/router.test.ts index 6836343882..f79b3e8edb 100644 --- a/plugins/adr-backend/src/service/router.test.ts +++ b/plugins/adr-backend/src/service/router.test.ts @@ -24,7 +24,7 @@ import { import express from 'express'; import request from 'supertest'; import { createRouter } from './router'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; const listEndpointName = '/list'; const fileEndpointName = '/file'; @@ -122,7 +122,7 @@ describe('createRouter', () => { cacheClient: new MockCacheClient(), logger: { error: (message: any) => message, - } as Logger, + } as LoggerService, }); app = express().use(router); }); diff --git a/plugins/adr-backend/src/service/router.ts b/plugins/adr-backend/src/service/router.ts index ed02a76e13..ab0a8afbcb 100644 --- a/plugins/adr-backend/src/service/router.ts +++ b/plugins/adr-backend/src/service/router.ts @@ -16,16 +16,16 @@ import { CacheClient, UrlReader } from '@backstage/backend-common'; import { NotModifiedError, stringifyError } from '@backstage/errors'; -import { Logger } from 'winston'; import express from 'express'; import Router from 'express-promise-router'; import { madrParser } from '../search/madrParser'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** @public */ export type AdrRouterOptions = { reader: UrlReader; cacheClient: CacheClient; - logger: Logger; + logger: LoggerService; }; /** @public */ diff --git a/plugins/airbrake-backend/api-report.md b/plugins/airbrake-backend/api-report.md index 4658767b4a..5509fc4fd6 100644 --- a/plugins/airbrake-backend/api-report.md +++ b/plugins/airbrake-backend/api-report.md @@ -6,7 +6,7 @@ import { BackendFeature } from '@backstage/backend-plugin-api'; import { Config } from '@backstage/config'; import express from 'express'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; // @public export interface AirbrakeConfig { @@ -26,6 +26,6 @@ export function extractAirbrakeConfig(config: Config): AirbrakeConfig; // @public export interface RouterOptions { airbrakeConfig: AirbrakeConfig; - logger: Logger; + logger: LoggerService; } ``` diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 251a52deeb..6cfe432913 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -35,10 +35,10 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "http-proxy-middleware": "^2.0.0", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { + "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/http-proxy-middleware": "^1.0.0", "@types/supertest": "^2.0.8", diff --git a/plugins/airbrake-backend/src/plugin.ts b/plugins/airbrake-backend/src/plugin.ts index 83606ba115..917ffbceac 100644 --- a/plugins/airbrake-backend/src/plugin.ts +++ b/plugins/airbrake-backend/src/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -40,7 +39,7 @@ export const airbrakePlugin = createBackendPlugin({ httpRouter.use( await createRouter({ airbrakeConfig: extractAirbrakeConfig(config), - logger: loggerToWinstonLogger(logger), + logger, }), ); httpRouter.addAuthPolicy({ diff --git a/plugins/airbrake-backend/src/service/router.test.ts b/plugins/airbrake-backend/src/service/router.test.ts index 7ccafd7eba..f981b18872 100644 --- a/plugins/airbrake-backend/src/service/router.test.ts +++ b/plugins/airbrake-backend/src/service/router.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import express from 'express'; import request from 'supertest'; import { ConfigReader } from '@backstage/config'; @@ -24,17 +23,18 @@ import { RouterOptions, } from './router'; import { AirbrakeConfig, extractAirbrakeConfig } from '../config'; -import * as winston from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; +import { mockServices } from '@backstage/backend-test-utils'; describe('createRouter', () => { let app: express.Express; let airbrakeConfig: AirbrakeConfig; - let voidLogger: winston.Logger; + let voidLogger: LoggerService; beforeEach(async () => { jest.resetAllMocks(); - voidLogger = getVoidLogger(); + voidLogger = mockServices.logger.mock(); const config = new ConfigReader({ airbrake: { apiKey: 'fakeApiKey', diff --git a/plugins/airbrake-backend/src/service/router.ts b/plugins/airbrake-backend/src/service/router.ts index 5dc0b44a9b..a6d6af6d8c 100644 --- a/plugins/airbrake-backend/src/service/router.ts +++ b/plugins/airbrake-backend/src/service/router.ts @@ -17,10 +17,10 @@ import { errorHandler } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { createProxyMiddleware } from 'http-proxy-middleware'; import { AirbrakeConfig } from '../config'; import { Options } from 'http-proxy-middleware/dist/types'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * The router options that are needed when creating a router. @@ -31,7 +31,7 @@ export interface RouterOptions { /** * A logger object */ - logger: Logger; + logger: LoggerService; /** * The Airbrake config obtained from {@link extractAirbrakeConfig} diff --git a/plugins/airbrake-backend/src/service/standaloneServer.ts b/plugins/airbrake-backend/src/service/standaloneServer.ts index 6825e60a0a..31aa41d832 100644 --- a/plugins/airbrake-backend/src/service/standaloneServer.ts +++ b/plugins/airbrake-backend/src/service/standaloneServer.ts @@ -19,14 +19,14 @@ import { loadBackendConfig, } from '@backstage/backend-common'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; import { extractAirbrakeConfig } from '../config'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/app-backend/api-report.md b/plugins/app-backend/api-report.md index 79f00656f1..9ef0f97dab 100644 --- a/plugins/app-backend/api-report.md +++ b/plugins/app-backend/api-report.md @@ -8,7 +8,7 @@ import { Config } from '@backstage/config'; import { ConfigSchema } from '@backstage/config-loader'; import express from 'express'; import { HttpAuthService } from '@backstage/backend-plugin-api'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginDatabaseManager } from '@backstage/backend-common'; // @public (undocumented) @@ -26,7 +26,7 @@ export interface RouterOptions { // (undocumented) httpAuth?: HttpAuthService; // (undocumented) - logger: Logger; + logger: LoggerService; schema?: ConfigSchema; staticFallbackHandler?: express.Handler; } diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 3261810346..ee7b45a453 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -62,7 +62,6 @@ "knex": "^3.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts b/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts index 038d5bd9bf..05d6424013 100644 --- a/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts +++ b/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts @@ -19,10 +19,10 @@ import { resolvePackagePath, } from '@backstage/backend-common'; import { Knex } from 'knex'; -import { Logger } from 'winston'; import { DateTime } from 'luxon'; import partition from 'lodash/partition'; import { StaticAsset, StaticAssetInput, StaticAssetProvider } from './types'; +import { LoggerService } from '@backstage/backend-plugin-api'; const migrationsDir = resolvePackagePath( '@backstage/plugin-app-backend', @@ -39,7 +39,7 @@ interface StaticAssetRow { /** @internal */ export interface StaticAssetsStoreOptions { database: PluginDatabaseManager; - logger: Logger; + logger: LoggerService; } /** @@ -49,7 +49,7 @@ export interface StaticAssetsStoreOptions { */ export class StaticAssetsStore implements StaticAssetProvider { #db: Knex; - #logger: Logger; + #logger: LoggerService; #namespace: string; static async create(options: StaticAssetsStoreOptions) { @@ -65,7 +65,7 @@ export class StaticAssetsStore implements StaticAssetProvider { return new StaticAssetsStore(client, options.logger); } - private constructor(client: Knex, logger: Logger, namespace?: string) { + private constructor(client: Knex, logger: LoggerService, namespace?: string) { this.#db = client; this.#logger = logger; this.#namespace = namespace ?? 'default'; diff --git a/plugins/app-backend/src/lib/config.ts b/plugins/app-backend/src/lib/config.ts index f09ba5c5ec..df1146e746 100644 --- a/plugins/app-backend/src/lib/config.ts +++ b/plugins/app-backend/src/lib/config.ts @@ -16,7 +16,6 @@ import fs from 'fs-extra'; import { resolve as resolvePath } from 'path'; -import { Logger } from 'winston'; import { AppConfig, Config } from '@backstage/config'; import { JsonObject } from '@backstage/types'; import { @@ -24,12 +23,13 @@ import { loadConfigSchema, readEnvConfig, } from '@backstage/config-loader'; +import { LoggerService } from '@backstage/backend-plugin-api'; type InjectOptions = { appConfigs: AppConfig[]; // Directory of the static JS files to search for file to inject staticDir: string; - logger: Logger; + logger: LoggerService; }; /** diff --git a/plugins/app-backend/src/service/appPlugin.ts b/plugins/app-backend/src/service/appPlugin.ts index b3ab9ed29a..000db80911 100644 --- a/plugins/app-backend/src/service/appPlugin.ts +++ b/plugins/app-backend/src/service/appPlugin.ts @@ -20,7 +20,6 @@ import { createBackendPlugin, } from '@backstage/backend-plugin-api'; import { createRouter } from './router'; -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { configSchemaExtensionPoint, staticFallbackHandlerExtensionPoint, @@ -72,10 +71,8 @@ export const appPlugin = createBackendPlugin({ const appPackageName = config.getOptionalString('app.packageName') ?? 'app'; - const winstonLogger = loggerToWinstonLogger(logger); - const router = await createRouter({ - logger: winstonLogger, + logger, config, database, auth, diff --git a/plugins/app-backend/src/service/router.ts b/plugins/app-backend/src/service/router.ts index eac3b7f82d..b3242444aa 100644 --- a/plugins/app-backend/src/service/router.ts +++ b/plugins/app-backend/src/service/router.ts @@ -25,12 +25,11 @@ import express from 'express'; import Router from 'express-promise-router'; import fs from 'fs-extra'; import { resolve as resolvePath } from 'path'; -import { Logger } from 'winston'; import { injectConfig, readConfigs } from '../lib/config'; import { - StaticAssetsStore, - findStaticAssets, createStaticAssetMiddleware, + findStaticAssets, + StaticAssetsStore, } from '../lib/assets'; import { CACHE_CONTROL_MAX_CACHE, @@ -38,7 +37,11 @@ import { CACHE_CONTROL_REVALIDATE_CACHE, } from '../lib/headers'; import { ConfigSchema } from '@backstage/config-loader'; -import { AuthService, HttpAuthService } from '@backstage/backend-plugin-api'; +import { + AuthService, + HttpAuthService, + LoggerService, +} from '@backstage/backend-plugin-api'; import { AuthenticationError } from '@backstage/errors'; // express uses mime v1 while we only have types for mime v2 @@ -47,7 +50,7 @@ type Mime = { lookup(arg0: string): string }; /** @public */ export interface RouterOptions { config: Config; - logger: Logger; + logger: LoggerService; auth?: AuthService; httpAuth?: HttpAuthService; @@ -270,7 +273,7 @@ async function createEntryPointRouter({ appMode, appConfigs, }: { - logger: Logger; + logger: LoggerService; rootDir: string; assetStore?: StaticAssetsStore; staticFallbackHandler?: express.Handler; diff --git a/plugins/app-backend/src/service/standaloneServer.ts b/plugins/app-backend/src/service/standaloneServer.ts index d86b0f6807..f218c9942e 100644 --- a/plugins/app-backend/src/service/standaloneServer.ts +++ b/plugins/app-backend/src/service/standaloneServer.ts @@ -15,16 +15,16 @@ */ import { Server } from 'http'; -import { Logger } from 'winston'; import { createServiceBuilder } from '@backstage/backend-common'; import { Config } from '@backstage/config'; import { createRouter } from './router'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; config: Config; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/azure-devops-backend/api-report.md b/plugins/azure-devops-backend/api-report.md index 429a801b04..e310cb2428 100644 --- a/plugins/azure-devops-backend/api-report.md +++ b/plugins/azure-devops-backend/api-report.md @@ -15,7 +15,7 @@ import express from 'express'; import { GitRepository } from 'azure-devops-node-api/interfaces/GitInterfaces'; import { GitTag } from '@backstage/plugin-azure-devops-common'; import { LocationSpec } from '@backstage/plugin-catalog-common'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { Project } from '@backstage/plugin-azure-devops-common'; import { PullRequest } from '@backstage/plugin-azure-devops-common'; @@ -51,7 +51,7 @@ export class AzureDevOpsApi { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; urlReader: UrlReader; }, ): AzureDevOpsApi; @@ -159,7 +159,7 @@ export interface RouterOptions { // (undocumented) config: Config; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) permissions: PermissionEvaluator; // (undocumented) diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index ca104f4e9e..b82c6046d7 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -47,7 +47,6 @@ "lodash": "^4.17.21", "mime-types": "^2.1.27", "p-limit": "^3.1.0", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts index be0ec333bb..4ed54e63eb 100644 --- a/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts +++ b/plugins/azure-devops-backend/src/api/AzureDevOpsApi.ts @@ -23,12 +23,12 @@ import { DashboardPullRequest, GitTag, Policy, + Project, PullRequest, PullRequestOptions, RepoBuild, Team, TeamMember, - Project, } from '@backstage/plugin-azure-devops-common'; import { GitPullRequest, @@ -37,20 +37,19 @@ import { GitRepository, } from 'azure-devops-node-api/interfaces/GitInterfaces'; import { + buildEncodedUrl, convertDashboardPullRequest, convertPolicy, getArtifactId, replaceReadme, - buildEncodedUrl, } from '../utils'; import { TeamMember as AdoTeamMember } from 'azure-devops-node-api/interfaces/common/VSSInterfaces'; -import { Logger } from 'winston'; import { PolicyEvaluationRecord } from 'azure-devops-node-api/interfaces/PolicyInterfaces'; import { - WebApi, getHandlerFromToken, getPersonalAccessTokenHandler, + WebApi, } from 'azure-devops-node-api'; import { TeamProjectReference, @@ -69,16 +68,17 @@ import { mappedPullRequest, mappedRepoBuild, } from './mappers'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** @public */ export class AzureDevOpsApi { - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly urlReader: UrlReader; private readonly config: Config; private readonly credentialsProvider: AzureDevOpsCredentialsProvider; private constructor( - logger: Logger, + logger: LoggerService, urlReader: UrlReader, config: Config, credentialsProvider: AzureDevOpsCredentialsProvider, @@ -91,7 +91,7 @@ export class AzureDevOpsApi { static fromConfig( config: Config, - options: { logger: Logger; urlReader: UrlReader }, + options: { logger: LoggerService; urlReader: UrlReader }, ) { const scmIntegrations = ScmIntegrations.fromConfig(config); const credentialsProvider = diff --git a/plugins/azure-devops-backend/src/api/PullRequestsDashboardProvider.ts b/plugins/azure-devops-backend/src/api/PullRequestsDashboardProvider.ts index ec36d17e8c..470c958f9a 100644 --- a/plugins/azure-devops-backend/src/api/PullRequestsDashboardProvider.ts +++ b/plugins/azure-devops-backend/src/api/PullRequestsDashboardProvider.ts @@ -22,8 +22,8 @@ import { } from '@backstage/plugin-azure-devops-common'; import { AzureDevOpsApi } from './AzureDevOpsApi'; -import { Logger } from 'winston'; import limiterFactory from 'p-limit'; +import { LoggerService } from '@backstage/backend-plugin-api'; export const DEFAULT_TEAMS_LIMIT = 100; @@ -33,12 +33,12 @@ export class PullRequestsDashboardProvider { private teamMembers = new Map(); private constructor( - private readonly logger: Logger, + private readonly logger: LoggerService, private readonly azureDevOpsApi: AzureDevOpsApi, ) {} public static async create( - logger: Logger, + logger: LoggerService, azureDevOpsApi: AzureDevOpsApi, ): Promise { const provider = new PullRequestsDashboardProvider(logger, azureDevOpsApi); diff --git a/plugins/azure-devops-backend/src/plugin.ts b/plugins/azure-devops-backend/src/plugin.ts index f378e9c62e..8e8f7241f0 100644 --- a/plugins/azure-devops-backend/src/plugin.ts +++ b/plugins/azure-devops-backend/src/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -41,7 +40,7 @@ export const azureDevOpsPlugin = createBackendPlugin({ httpRouter.use( await createRouter({ config, - logger: loggerToWinstonLogger(logger), + logger, reader, permissions, }), diff --git a/plugins/azure-devops-backend/src/service/router.ts b/plugins/azure-devops-backend/src/service/router.ts index 8a3daf9f9a..6a06091b38 100644 --- a/plugins/azure-devops-backend/src/service/router.ts +++ b/plugins/azure-devops-backend/src/service/router.ts @@ -15,6 +15,11 @@ */ import { + azureDevOpsGitTagReadPermission, + azureDevOpsPermissions, + azureDevOpsPipelineReadPermission, + azureDevOpsPullRequestDashboardReadPermission, + azureDevOpsPullRequestReadPermission, DashboardPullRequest, PullRequestOptions, PullRequestStatus, @@ -22,10 +27,9 @@ import { import { AzureDevOpsApi } from '../api'; import { Config } from '@backstage/config'; -import { Logger } from 'winston'; import { - PullRequestsDashboardProvider, DEFAULT_TEAMS_LIMIT, + PullRequestsDashboardProvider, } from '../api/PullRequestsDashboardProvider'; import Router from 'express-promise-router'; import { errorHandler, UrlReader } from '@backstage/backend-common'; @@ -33,24 +37,18 @@ import express from 'express'; import { InputError, NotAllowedError } from '@backstage/errors'; import { getBearerTokenFromAuthorizationHeader } from '@backstage/plugin-auth-node'; import { - PermissionEvaluator, AuthorizeResult, + PermissionEvaluator, } from '@backstage/plugin-permission-common'; import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node'; -import { - azureDevOpsPullRequestReadPermission, - azureDevOpsPermissions, - azureDevOpsPullRequestDashboardReadPermission, - azureDevOpsGitTagReadPermission, - azureDevOpsPipelineReadPermission, -} from '@backstage/plugin-azure-devops-common'; +import { LoggerService } from '@backstage/backend-plugin-api'; const DEFAULT_TOP = 10; /** @public */ export interface RouterOptions { azureDevOpsApi?: AzureDevOpsApi; - logger: Logger; + logger: LoggerService; config: Config; reader: UrlReader; permissions: PermissionEvaluator; diff --git a/plugins/azure-devops-backend/src/service/standaloneServer.ts b/plugins/azure-devops-backend/src/service/standaloneServer.ts index 65b13fab35..647440ac9a 100644 --- a/plugins/azure-devops-backend/src/service/standaloneServer.ts +++ b/plugins/azure-devops-backend/src/service/standaloneServer.ts @@ -16,20 +16,20 @@ import { createServiceBuilder, - loadBackendConfig, - UrlReaders, - ServerTokenManager, HostDiscovery, + loadBackendConfig, + ServerTokenManager, + UrlReaders, } from '@backstage/backend-common'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; import { ServerPermissionClient } from '@backstage/plugin-permission-node'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/azure-sites-backend/api-report.md b/plugins/azure-sites-backend/api-report.md index 611a106816..a550695a8d 100644 --- a/plugins/azure-sites-backend/api-report.md +++ b/plugins/azure-sites-backend/api-report.md @@ -13,7 +13,7 @@ import { Config } from '@backstage/config'; import { DiscoveryService } from '@backstage/backend-plugin-api'; import express from 'express'; import { HttpAuthService } from '@backstage/backend-plugin-api'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PermissionsService } from '@backstage/backend-plugin-api'; // @public (undocumented) @@ -74,7 +74,7 @@ export interface RouterOptions { // (undocumented) httpAuth?: HttpAuthService; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) permissions: PermissionsService; } diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json index 38a35d5e08..92f10bc968 100644 --- a/plugins/azure-sites-backend/package.json +++ b/plugins/azure-sites-backend/package.json @@ -47,7 +47,6 @@ "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/azure-sites-backend/src/plugin.ts b/plugins/azure-sites-backend/src/plugin.ts index 5416e853a1..15cb032271 100644 --- a/plugins/azure-sites-backend/src/plugin.ts +++ b/plugins/azure-sites-backend/src/plugin.ts @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -54,7 +53,7 @@ export const azureSitesPlugin = createBackendPlugin({ const azureSitesApi = AzureSitesApi.fromConfig(config); httpRouter.use( await createRouter({ - logger: loggerToWinstonLogger(logger), + logger, azureSitesApi, permissions, catalogApi, diff --git a/plugins/azure-sites-backend/src/service/router.ts b/plugins/azure-sites-backend/src/service/router.ts index 79e4f46c04..965d7e56f2 100644 --- a/plugins/azure-sites-backend/src/service/router.ts +++ b/plugins/azure-sites-backend/src/service/router.ts @@ -20,29 +20,29 @@ import { } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { InputError, NotAllowedError, NotFoundError } from '@backstage/errors'; import { AuthorizeResult } from '@backstage/plugin-permission-common'; import { + AZURE_WEB_SITE_NAME_ANNOTATION, azureSitesActionPermission, azureSitesPermissions, - AZURE_WEB_SITE_NAME_ANNOTATION, } from '@backstage/plugin-azure-sites-common'; import { createPermissionIntegrationRouter } from '@backstage/plugin-permission-node'; import { CatalogApi } from '@backstage/catalog-client'; import { AzureSitesApi } from '../api'; import { - DiscoveryService, AuthService, + DiscoveryService, HttpAuthService, + LoggerService, PermissionsService, } from '@backstage/backend-plugin-api'; /** @public */ export interface RouterOptions { - logger: Logger; + logger: LoggerService; azureSitesApi: AzureSitesApi; catalogApi: CatalogApi; permissions: PermissionsService; diff --git a/plugins/azure-sites-backend/src/service/standaloneServer.ts b/plugins/azure-sites-backend/src/service/standaloneServer.ts index c0961f0359..848e64c5cd 100644 --- a/plugins/azure-sites-backend/src/service/standaloneServer.ts +++ b/plugins/azure-sites-backend/src/service/standaloneServer.ts @@ -21,16 +21,16 @@ import { SingleHostDiscovery, } from '@backstage/backend-common'; import { Server } from 'http'; -import { Logger } from 'winston'; import { AzureSitesApi } from '../api'; import { createRouter } from './router'; import { ServerPermissionClient } from '@backstage/plugin-permission-node'; import { CatalogClient } from '@backstage/catalog-client'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/badges-backend/api-report.md b/plugins/badges-backend/api-report.md index fb0c71dd75..38f93ff417 100644 --- a/plugins/badges-backend/api-report.md +++ b/plugins/badges-backend/api-report.md @@ -11,7 +11,7 @@ import { Entity } from '@backstage/catalog-model'; import express from 'express'; import { HttpAuthService } from '@backstage/backend-plugin-api'; import { IdentityApi } from '@backstage/plugin-auth-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { TokenManager } from '@backstage/backend-common'; @@ -152,7 +152,7 @@ export interface RouterOptions { // (undocumented) identity: IdentityApi; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) tokenManager: TokenManager; } diff --git a/plugins/badges-backend/src/plugin.ts b/plugins/badges-backend/src/plugin.ts index 53e03f21e5..b5a1af54f5 100644 --- a/plugins/badges-backend/src/plugin.ts +++ b/plugins/badges-backend/src/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -54,7 +53,7 @@ export const badgesPlugin = createBackendPlugin({ httpRouter.use( await createRouter({ config, - logger: loggerToWinstonLogger(logger), + logger, badgeFactories: createDefaultBadgeFactories(), discovery, tokenManager, diff --git a/plugins/badges-backend/src/service/router.ts b/plugins/badges-backend/src/service/router.ts index d508a02b2a..f59d1cfd10 100644 --- a/plugins/badges-backend/src/service/router.ts +++ b/plugins/badges-backend/src/service/router.ts @@ -29,11 +29,14 @@ import { NotFoundError } from '@backstage/errors'; import { BadgeBuilder, DefaultBadgeBuilder } from '../lib/BadgeBuilder'; import { BadgeContext, BadgeFactories } from '../types'; import { isNil } from 'lodash'; -import { Logger } from 'winston'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { BadgesStore, DatabaseBadgesStore } from '../database/badgesStore'; import { createDefaultBadgeFactories } from '../badges'; -import { AuthService, HttpAuthService } from '@backstage/backend-plugin-api'; +import { + AuthService, + HttpAuthService, + LoggerService, +} from '@backstage/backend-plugin-api'; /** @public */ export interface RouterOptions { @@ -45,7 +48,7 @@ export interface RouterOptions { tokenManager: TokenManager; auth?: AuthService; httpAuth?: HttpAuthService; - logger: Logger; + logger: LoggerService; identity: IdentityApi; badgeStore?: BadgesStore; } @@ -95,7 +98,7 @@ async function obfuscatedRoute( router: express.Router, catalog: CatalogApi, badgeBuilder: BadgeBuilder, - logger: Logger, + logger: LoggerService, options: RouterOptions, config: Config, baseUrl: string, diff --git a/plugins/bazaar-backend/api-report.md b/plugins/bazaar-backend/api-report.md index 1ee889c04a..73411af071 100644 --- a/plugins/bazaar-backend/api-report.md +++ b/plugins/bazaar-backend/api-report.md @@ -6,7 +6,7 @@ import { Config } from '@backstage/config'; import express from 'express'; import { IdentityApi } from '@backstage/plugin-auth-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginDatabaseManager } from '@backstage/backend-common'; // @public (undocumented) @@ -21,7 +21,7 @@ export interface RouterOptions { // (undocumented) identity: IdentityApi; // (undocumented) - logger: Logger; + logger: LoggerService; } // (No @packageDocumentation comment for this package) diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 6765c3c300..514851c287 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -54,7 +54,6 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "knex": "^3.0.0", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/bazaar-backend/src/alpha.ts b/plugins/bazaar-backend/src/alpha.ts index 466181e073..ff1c78bac3 100644 --- a/plugins/bazaar-backend/src/alpha.ts +++ b/plugins/bazaar-backend/src/alpha.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -43,7 +42,7 @@ export default createBackendPlugin({ database, config, identity, - logger: loggerToWinstonLogger(logger), + logger, }), ); }, diff --git a/plugins/bazaar-backend/src/service/router.ts b/plugins/bazaar-backend/src/service/router.ts index f902d0e8cc..cb4dcec0d5 100644 --- a/plugins/bazaar-backend/src/service/router.ts +++ b/plugins/bazaar-backend/src/service/router.ts @@ -17,14 +17,14 @@ import { errorHandler, PluginDatabaseManager } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { Config } from '@backstage/config'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { DatabaseHandler } from './DatabaseHandler'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** @public */ export interface RouterOptions { - logger: Logger; + logger: LoggerService; database: PluginDatabaseManager; config: Config; identity: IdentityApi; diff --git a/plugins/bazaar-backend/src/service/standaloneServer.ts b/plugins/bazaar-backend/src/service/standaloneServer.ts index c222777aae..b4aabe074f 100644 --- a/plugins/bazaar-backend/src/service/standaloneServer.ts +++ b/plugins/bazaar-backend/src/service/standaloneServer.ts @@ -15,20 +15,20 @@ */ import { - DatabaseManager, createServiceBuilder, + DatabaseManager, loadBackendConfig, } from '@backstage/backend-common'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; import { ConfigReader } from '@backstage/config'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/catalog-backend-module-aws/api-report.md b/plugins/catalog-backend-module-aws/api-report.md index a7a3f6816a..5098ab5c32 100644 --- a/plugins/catalog-backend-module-aws/api-report.md +++ b/plugins/catalog-backend-module-aws/api-report.md @@ -14,7 +14,7 @@ import type { Entity } from '@backstage/catalog-model'; import { EntityProvider } from '@backstage/plugin-catalog-node'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { LocationSpec } from '@backstage/plugin-catalog-common'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { TaskRunner } from '@backstage/backend-tasks'; import { UrlReader } from '@backstage/backend-common'; @@ -60,7 +60,7 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; }, ): Promise; // (undocumented) @@ -95,7 +95,7 @@ export class AwsS3EntityProvider implements EntityProvider { static fromConfig( configRoot: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -103,7 +103,7 @@ export class AwsS3EntityProvider implements EntityProvider { // (undocumented) getProviderName(): string; // (undocumented) - refresh(logger: Logger): Promise; + refresh(logger: LoggerService): Promise; } // @public diff --git a/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.ts b/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.ts index e7816ae12f..5568b8b3d8 100644 --- a/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.ts +++ b/plugins/catalog-backend-module-aws/src/module/catalogModuleAwsS3EntityProvider.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendModule, @@ -41,7 +40,7 @@ export const catalogModuleAwsS3EntityProvider = createBackendModule({ async init({ config, catalog, logger, scheduler }) { catalog.addEntityProvider( AwsS3EntityProvider.fromConfig(config, { - logger: loggerToWinstonLogger(logger), + logger, scheduler, }), ); diff --git a/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts index a87a83ec4b..4a454fce6f 100644 --- a/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts +++ b/plugins/catalog-backend-module-aws/src/processors/AwsOrganizationCloudAccountProcessor.ts @@ -27,12 +27,12 @@ import { ListAccountsResponse, Organizations, } from '@aws-sdk/client-organizations'; -import { Logger } from 'winston'; import { readAwsOrganizationConfig } from '../awsOrganization/config'; import { AwsCredentialProvider, DefaultAwsCredentialsManager, } from '@backstage/integration-aws-node'; +import { LoggerService } from '@backstage/backend-plugin-api'; const AWS_ORGANIZATION_REGION = 'us-east-1'; const LOCATION_TYPE = 'aws-cloud-accounts'; @@ -54,9 +54,9 @@ const ACCOUNT_STATUS_LABEL = 'amazonaws.com/account-status'; */ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { private readonly organizations: Organizations; - private readonly logger: Logger; + private readonly logger: LoggerService; - static async fromConfig(config: Config, options: { logger: Logger }) { + static async fromConfig(config: Config, options: { logger: LoggerService }) { const c = config.getOptionalConfig('catalog.processors.awsOrganization'); const orgConfig = c ? readAwsOrganizationConfig(c) : undefined; const awsCredentialsManager = @@ -72,7 +72,7 @@ export class AwsOrganizationCloudAccountProcessor implements CatalogProcessor { private constructor( private readonly credProvider: AwsCredentialProvider, - logger: Logger, + logger: LoggerService, ) { this.logger = logger?.child({ target: this.getProcessorName(), diff --git a/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.ts b/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.ts index 25631b2f99..91ba76b695 100644 --- a/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.ts +++ b/plugins/catalog-backend-module-aws/src/providers/AwsS3EntityProvider.ts @@ -31,12 +31,12 @@ import { S3, } from '@aws-sdk/client-s3'; import * as uuid from 'uuid'; -import { Logger } from 'winston'; import { getEndpointFromInstructions } from '@aws-sdk/middleware-endpoint'; import { AwsCredentialsManager, DefaultAwsCredentialsManager, } from '@backstage/integration-aws-node'; +import { LoggerService } from '@backstage/backend-plugin-api'; // TODO: event-based updates using S3 events (+ queue like SQS)? /** @@ -47,7 +47,7 @@ import { * @public */ export class AwsS3EntityProvider implements EntityProvider { - private readonly logger: Logger; + private readonly logger: LoggerService; private s3?: S3; private readonly scheduleFn: () => Promise; private connection?: EntityProviderConnection; @@ -56,7 +56,7 @@ export class AwsS3EntityProvider implements EntityProvider { static fromConfig( configRoot: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -106,7 +106,7 @@ export class AwsS3EntityProvider implements EntityProvider { private readonly config: AwsS3Config, private readonly integration: AwsS3Integration, private readonly awsCredentialsManager: AwsCredentialsManager, - logger: Logger, + logger: LoggerService, taskRunner: TaskRunner, ) { this.logger = logger.child({ @@ -176,7 +176,7 @@ export class AwsS3EntityProvider implements EntityProvider { await this.scheduleFn(); } - async refresh(logger: Logger) { + async refresh(logger: LoggerService) { if (!this.connection) { throw new Error('Not initialized'); } diff --git a/plugins/catalog-backend-module-azure/api-report.md b/plugins/catalog-backend-module-azure/api-report.md index 596ebbf6cf..a449909dbf 100644 --- a/plugins/catalog-backend-module-azure/api-report.md +++ b/plugins/catalog-backend-module-azure/api-report.md @@ -9,7 +9,7 @@ import { Config } from '@backstage/config'; import { EntityProvider } from '@backstage/plugin-catalog-node'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { LocationSpec } from '@backstage/plugin-catalog-common'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { ScmIntegrationRegistry } from '@backstage/integration'; import { TaskRunner } from '@backstage/backend-tasks'; @@ -18,13 +18,13 @@ import { TaskRunner } from '@backstage/backend-tasks'; export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor { constructor(options: { integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; }); // (undocumented) static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; }, ): AzureDevOpsDiscoveryProcessor; // (undocumented) @@ -45,7 +45,7 @@ export class AzureDevOpsEntityProvider implements EntityProvider { static fromConfig( configRoot: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -53,6 +53,6 @@ export class AzureDevOpsEntityProvider implements EntityProvider { // (undocumented) getProviderName(): string; // (undocumented) - refresh(logger: Logger): Promise; + refresh(logger: LoggerService): Promise; } ``` diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index 0b6ce02bb4..aa9016a301 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -57,8 +57,7 @@ "@backstage/plugin-catalog-common": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", "node-fetch": "^2.6.7", - "uuid": "^9.0.0", - "winston": "^3.2.1" + "uuid": "^9.0.0" }, "devDependencies": { "@backstage/backend-test-utils": "workspace:^", diff --git a/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.ts b/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.ts index b9c55041b3..cb4d5a1bf8 100644 --- a/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.ts +++ b/plugins/catalog-backend-module-azure/src/module/catalogModuleAzureDevOpsEntityProvider.ts @@ -14,10 +14,9 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { - createBackendModule, coreServices, + createBackendModule, } from '@backstage/backend-plugin-api'; import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha'; import { AzureDevOpsEntityProvider } from '../providers'; @@ -41,7 +40,7 @@ export const catalogModuleAzureDevOpsEntityProvider = createBackendModule({ async init({ config, catalog, logger, scheduler }) { catalog.addEntityProvider( AzureDevOpsEntityProvider.fromConfig(config, { - logger: loggerToWinstonLogger(logger), + logger, scheduler, }), ); diff --git a/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.ts b/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.ts index ddb3c5f59f..9156b5a9d7 100644 --- a/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.ts +++ b/plugins/catalog-backend-module-azure/src/processors/AzureDevOpsDiscoveryProcessor.ts @@ -27,8 +27,8 @@ import { processingResult, } from '@backstage/plugin-catalog-node'; import { LocationSpec } from '@backstage/plugin-catalog-common'; -import { Logger } from 'winston'; import { codeSearch } from '../lib'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Extracts repositories out of an Azure DevOps org. @@ -49,9 +49,9 @@ import { codeSearch } from '../lib'; export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; private readonly credentialsProvider: AzureDevOpsCredentialsProvider; - private readonly logger: Logger; + private readonly logger: LoggerService; - static fromConfig(config: Config, options: { logger: Logger }) { + static fromConfig(config: Config, options: { logger: LoggerService }) { const integrations = ScmIntegrations.fromConfig(config); return new AzureDevOpsDiscoveryProcessor({ @@ -62,7 +62,7 @@ export class AzureDevOpsDiscoveryProcessor implements CatalogProcessor { constructor(options: { integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; }) { this.integrations = options.integrations; this.logger = options.logger; diff --git a/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts b/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts index 44e618ffcd..60c7354636 100644 --- a/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts +++ b/plugins/catalog-backend-module-azure/src/providers/AzureDevOpsEntityProvider.ts @@ -29,10 +29,10 @@ import { } from '@backstage/plugin-catalog-node'; import { LocationSpec } from '@backstage/plugin-catalog-common'; import { readAzureDevOpsConfigs } from './config'; -import { Logger } from 'winston'; import { AzureDevOpsConfig } from './types'; import * as uuid from 'uuid'; import { codeSearch, CodeSearchResultItem } from '../lib'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Provider which discovers catalog files within an Azure DevOps repositories. @@ -42,14 +42,14 @@ import { codeSearch, CodeSearchResultItem } from '../lib'; * @public */ export class AzureDevOpsEntityProvider implements EntityProvider { - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly scheduleFn: () => Promise; private connection?: EntityProviderConnection; static fromConfig( configRoot: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -98,7 +98,7 @@ export class AzureDevOpsEntityProvider implements EntityProvider { private readonly config: AzureDevOpsConfig, private readonly integration: AzureIntegration, private readonly credentialsProvider: AzureDevOpsCredentialsProvider, - logger: Logger, + logger: LoggerService, taskRunner: TaskRunner, ) { this.logger = logger.child({ @@ -144,7 +144,7 @@ export class AzureDevOpsEntityProvider implements EntityProvider { await this.scheduleFn(); } - async refresh(logger: Logger) { + async refresh(logger: LoggerService) { if (!this.connection) { throw new Error('Not initialized'); } diff --git a/plugins/catalog-backend-module-bitbucket-server/api-report.md b/plugins/catalog-backend-module-bitbucket-server/api-report.md index 467294f3b0..b63309415b 100644 --- a/plugins/catalog-backend-module-bitbucket-server/api-report.md +++ b/plugins/catalog-backend-module-bitbucket-server/api-report.md @@ -9,7 +9,7 @@ import { Entity } from '@backstage/catalog-model'; import { EntityProvider } from '@backstage/plugin-catalog-node'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { LocationSpec } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { Response as Response_2 } from 'node-fetch'; import { TaskRunner } from '@backstage/backend-tasks'; @@ -55,7 +55,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; parser?: BitbucketServerLocationParser; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; @@ -64,7 +64,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { // (undocumented) getProviderName(): string; // (undocumented) - refresh(logger: Logger): Promise; + refresh(logger: LoggerService): Promise; } // @public (undocumented) @@ -78,7 +78,7 @@ export type BitbucketServerListOptions = { export type BitbucketServerLocationParser = (options: { client: BitbucketServerClient; location: LocationSpec; - logger: Logger; + logger: LoggerService; }) => AsyncIterable; // @public (undocumented) diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index 6808b27064..8bae871d5a 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -54,8 +54,7 @@ "@backstage/plugin-catalog-node": "workspace:^", "@types/node-fetch": "^2.5.12", "node-fetch": "^2.6.7", - "uuid": "^9.0.0", - "winston": "^3.2.1" + "uuid": "^9.0.0" }, "devDependencies": { "@backstage/backend-test-utils": "workspace:^", diff --git a/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts b/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts index dd2a423cdc..3b9a44f5a2 100644 --- a/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts +++ b/plugins/catalog-backend-module-bitbucket-server/src/module/catalogModuleBitbucketServerEntityProvider.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendModule, @@ -37,9 +36,8 @@ export const catalogModuleBitbucketServerEntityProvider = createBackendModule({ scheduler: coreServices.scheduler, }, async init({ catalog, config, logger, scheduler }) { - const winstonLogger = loggerToWinstonLogger(logger); const providers = BitbucketServerEntityProvider.fromConfig(config, { - logger: winstonLogger, + logger, scheduler, }); diff --git a/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.ts b/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.ts index 95bda0e910..a4cb8f1f21 100644 --- a/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.ts +++ b/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerEntityProvider.ts @@ -26,7 +26,6 @@ import { EntityProvider, EntityProviderConnection, } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; import * as uuid from 'uuid'; import { BitbucketServerClient, paginated } from '../lib'; import { @@ -37,6 +36,7 @@ import { BitbucketServerLocationParser, defaultBitbucketServerLocationParser, } from './BitbucketServerLocationParser'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Discovers catalog files located in Bitbucket Server. @@ -50,14 +50,14 @@ export class BitbucketServerEntityProvider implements EntityProvider { private readonly integration: BitbucketServerIntegration; private readonly config: BitbucketServerEntityProviderConfig; private readonly parser: BitbucketServerLocationParser; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly scheduleFn: () => Promise; private connection?: EntityProviderConnection; static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; parser?: BitbucketServerLocationParser; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; @@ -102,7 +102,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { private constructor( config: BitbucketServerEntityProviderConfig, integration: BitbucketServerIntegration, - logger: Logger, + logger: LoggerService, taskRunner: TaskRunner, parser?: BitbucketServerLocationParser, ) { @@ -151,7 +151,7 @@ export class BitbucketServerEntityProvider implements EntityProvider { await this.scheduleFn(); } - async refresh(logger: Logger) { + async refresh(logger: LoggerService) { if (!this.connection) { throw new Error('Not initialized'); } diff --git a/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerLocationParser.ts b/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerLocationParser.ts index e5d48f92b8..6aea23387e 100644 --- a/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerLocationParser.ts +++ b/plugins/catalog-backend-module-bitbucket-server/src/providers/BitbucketServerLocationParser.ts @@ -19,8 +19,8 @@ import { locationSpecToLocationEntity, } from '@backstage/plugin-catalog-node'; import { Entity } from '@backstage/catalog-model'; -import { Logger } from 'winston'; import { BitbucketServerClient } from '../lib'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * A custom callback that reacts to finding a location by yielding entities. @@ -31,7 +31,7 @@ import { BitbucketServerClient } from '../lib'; export type BitbucketServerLocationParser = (options: { client: BitbucketServerClient; location: LocationSpec; - logger: Logger; + logger: LoggerService; }) => AsyncIterable; export const defaultBitbucketServerLocationParser = diff --git a/plugins/catalog-backend-module-gcp/api-report.md b/plugins/catalog-backend-module-gcp/api-report.md index b20b9c8363..6ac42a1244 100644 --- a/plugins/catalog-backend-module-gcp/api-report.md +++ b/plugins/catalog-backend-module-gcp/api-report.md @@ -8,7 +8,7 @@ import { Config } from '@backstage/config'; import * as container from '@google-cloud/container'; import { EntityProvider } from '@backstage/plugin-catalog-node'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { SchedulerService } from '@backstage/backend-plugin-api'; // @public @@ -25,7 +25,7 @@ export class GkeEntityProvider implements EntityProvider { scheduler, config, }: { - logger: Logger; + logger: LoggerService; scheduler: SchedulerService; config: Config; }): GkeEntityProvider; @@ -36,7 +36,7 @@ export class GkeEntityProvider implements EntityProvider { config, clusterManagerClient, }: { - logger: Logger; + logger: LoggerService; scheduler: SchedulerService; config: Config; clusterManagerClient: container.v1.ClusterManagerClient; diff --git a/plugins/catalog-backend-module-gcp/package.json b/plugins/catalog-backend-module-gcp/package.json index 2f6125fa48..9ffd453ada 100644 --- a/plugins/catalog-backend-module-gcp/package.json +++ b/plugins/catalog-backend-module-gcp/package.json @@ -56,8 +56,7 @@ "@backstage/config": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", "@backstage/plugin-kubernetes-common": "workspace:^", - "@google-cloud/container": "^5.0.0", - "winston": "^3.2.1" + "@google-cloud/container": "^5.0.0" }, "devDependencies": { "@backstage/backend-test-utils": "workspace:^", diff --git a/plugins/catalog-backend-module-gcp/src/module/catalogModuleGcpGkeEntityProvider.ts b/plugins/catalog-backend-module-gcp/src/module/catalogModuleGcpGkeEntityProvider.ts index acc216e1f6..03359139d5 100644 --- a/plugins/catalog-backend-module-gcp/src/module/catalogModuleGcpGkeEntityProvider.ts +++ b/plugins/catalog-backend-module-gcp/src/module/catalogModuleGcpGkeEntityProvider.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendModule, @@ -41,7 +40,7 @@ export const catalogModuleGcpGkeEntityProvider = createBackendModule({ async init({ config, catalog, logger, scheduler }) { catalog.addEntityProvider( GkeEntityProvider.fromConfig({ - logger: loggerToWinstonLogger(logger), + logger, scheduler, config, }), diff --git a/plugins/catalog-backend-module-gcp/src/providers/GkeEntityProvider.ts b/plugins/catalog-backend-module-gcp/src/providers/GkeEntityProvider.ts index 3b2be79587..d644a8383c 100644 --- a/plugins/catalog-backend-module-gcp/src/providers/GkeEntityProvider.ts +++ b/plugins/catalog-backend-module-gcp/src/providers/GkeEntityProvider.ts @@ -14,16 +14,14 @@ * limitations under the License. */ import { - TaskRunner, readTaskScheduleDefinitionFromConfig, + TaskRunner, } from '@backstage/backend-tasks'; import { DeferredEntity, EntityProvider, EntityProviderConnection, } from '@backstage/plugin-catalog-node'; - -import { Logger } from 'winston'; import * as container from '@google-cloud/container'; import { ANNOTATION_KUBERNETES_API_SERVER, @@ -33,7 +31,7 @@ import { ANNOTATION_KUBERNETES_DASHBOARD_PARAMETERS, } from '@backstage/plugin-kubernetes-common'; import { Config } from '@backstage/config'; -import { SchedulerService } from '@backstage/backend-plugin-api'; +import { LoggerService, SchedulerService } from '@backstage/backend-plugin-api'; import { ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, @@ -45,14 +43,14 @@ import { * @public */ export class GkeEntityProvider implements EntityProvider { - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly scheduleFn: () => Promise; private readonly gkeParents: string[]; private readonly clusterManagerClient: container.v1.ClusterManagerClient; private connection?: EntityProviderConnection; private constructor( - logger: Logger, + logger: LoggerService, taskRunner: TaskRunner, gkeParents: string[], clusterManagerClient: container.v1.ClusterManagerClient, @@ -68,7 +66,7 @@ export class GkeEntityProvider implements EntityProvider { scheduler, config, }: { - logger: Logger; + logger: LoggerService; scheduler: SchedulerService; config: Config; }) { @@ -86,7 +84,7 @@ export class GkeEntityProvider implements EntityProvider { config, clusterManagerClient, }: { - logger: Logger; + logger: LoggerService; scheduler: SchedulerService; config: Config; clusterManagerClient: container.v1.ClusterManagerClient; diff --git a/plugins/catalog-backend-module-gerrit/api-report.md b/plugins/catalog-backend-module-gerrit/api-report.md index f64e697555..a4620a1c15 100644 --- a/plugins/catalog-backend-module-gerrit/api-report.md +++ b/plugins/catalog-backend-module-gerrit/api-report.md @@ -6,7 +6,7 @@ import { Config } from '@backstage/config'; import { EntityProvider } from '@backstage/plugin-catalog-node'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { TaskRunner } from '@backstage/backend-tasks'; @@ -18,7 +18,7 @@ export class GerritEntityProvider implements EntityProvider { static fromConfig( configRoot: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -26,7 +26,7 @@ export class GerritEntityProvider implements EntityProvider { // (undocumented) getProviderName(): string; // (undocumented) - refresh(logger: Logger): Promise; + refresh(logger: LoggerService): Promise; } // (No @packageDocumentation comment for this package) diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index c2fb6fd1c1..ea59066c0c 100644 --- a/plugins/catalog-backend-module-gerrit/package.json +++ b/plugins/catalog-backend-module-gerrit/package.json @@ -54,8 +54,7 @@ "@backstage/plugin-catalog-node": "workspace:^", "fs-extra": "^11.2.0", "node-fetch": "^2.6.7", - "uuid": "^9.0.0", - "winston": "^3.2.1" + "uuid": "^9.0.0" }, "devDependencies": { "@backstage/backend-test-utils": "workspace:^", diff --git a/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.ts b/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.ts index af870d095f..e0efbabefd 100644 --- a/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.ts +++ b/plugins/catalog-backend-module-gerrit/src/module/catalogModuleGerritEntityProvider.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendModule, @@ -37,9 +36,8 @@ export const catalogModuleGerritEntityProvider = createBackendModule({ scheduler: coreServices.scheduler, }, async init({ catalog, config, logger, scheduler }) { - const winstonLogger = loggerToWinstonLogger(logger); const providers = GerritEntityProvider.fromConfig(config, { - logger: winstonLogger, + logger, scheduler, }); diff --git a/plugins/catalog-backend-module-gerrit/src/providers/GerritEntityProvider.ts b/plugins/catalog-backend-module-gerrit/src/providers/GerritEntityProvider.ts index c773004532..ee4a33f395 100644 --- a/plugins/catalog-backend-module-gerrit/src/providers/GerritEntityProvider.ts +++ b/plugins/catalog-backend-module-gerrit/src/providers/GerritEntityProvider.ts @@ -32,23 +32,23 @@ import { ScmIntegrations, } from '@backstage/integration'; import * as uuid from 'uuid'; -import { Logger } from 'winston'; import { readGerritConfigs } from './config'; import { GerritProjectQueryResult, GerritProviderConfig } from './types'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** @public */ export class GerritEntityProvider implements EntityProvider { private readonly config: GerritProviderConfig; private readonly integration: GerritIntegration; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly scheduleFn: () => Promise; private connection?: EntityProviderConnection; static fromConfig( configRoot: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -94,7 +94,7 @@ export class GerritEntityProvider implements EntityProvider { private constructor( config: GerritProviderConfig, integration: GerritIntegration, - logger: Logger, + logger: LoggerService, taskRunner: TaskRunner, ) { this.config = config; @@ -139,7 +139,7 @@ export class GerritEntityProvider implements EntityProvider { }; } - async refresh(logger: Logger): Promise { + async refresh(logger: LoggerService): Promise { if (!this.connection) { throw new Error('Gerrit discovery connection not initialized'); } diff --git a/plugins/catalog-backend-module-github-org/src/module.ts b/plugins/catalog-backend-module-github-org/src/module.ts index 5aeec60572..0baa768644 100644 --- a/plugins/catalog-backend-module-github-org/src/module.ts +++ b/plugins/catalog-backend-module-github-org/src/module.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendModule, @@ -111,7 +110,7 @@ export const catalogModuleGithubOrgEntityProvider = createBackendModule({ schedule: scheduler.createScheduledTaskRunner( definition.schedule, ), - logger: loggerToWinstonLogger(logger), + logger, userTransformer, teamTransformer, }), diff --git a/plugins/catalog-backend-module-github/api-report.md b/plugins/catalog-backend-module-github/api-report.md index 8367393e7f..5214841ac4 100644 --- a/plugins/catalog-backend-module-github/api-report.md +++ b/plugins/catalog-backend-module-github/api-report.md @@ -19,7 +19,7 @@ import { GithubCredentialsProvider } from '@backstage/integration'; import { GithubIntegrationConfig } from '@backstage/integration'; import { graphql } from '@octokit/graphql'; import { LocationSpec } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { ScmIntegrationRegistry } from '@backstage/integration'; @@ -41,14 +41,14 @@ export const defaultUserTransformer: ( export class GithubDiscoveryProcessor implements CatalogProcessor { constructor(options: { integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; }); // (undocumented) static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; }, ): GithubDiscoveryProcessor; @@ -70,7 +70,7 @@ export class GitHubEntityProvider implements EntityProvider { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -78,7 +78,7 @@ export class GitHubEntityProvider implements EntityProvider { // (undocumented) getProviderName(): string; // (undocumented) - refresh(logger: Logger): Promise; + refresh(logger: LoggerService): Promise; } // @public @@ -90,7 +90,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber { config: Config, options: { events?: EventsService; - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -100,7 +100,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber { // (undocumented) onEvent(params: EventParams): Promise; // (undocumented) - refresh(logger: Logger): Promise; + refresh(logger: LoggerService): Promise; // (undocumented) supportsEventTopics(): string[]; } @@ -147,7 +147,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider { gitHubConfig: GithubIntegrationConfig; githubCredentialsProvider: GithubCredentialsProvider; githubUrl: string; - logger: Logger; + logger: LoggerService; orgs?: string[]; userTransformer?: UserTransformer; teamTransformer?: TeamTransformer; @@ -161,7 +161,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider { ): GithubMultiOrgEntityProvider; // (undocumented) getProviderName(): string; - read(options?: { logger?: Logger }): Promise; + read(options?: { logger?: LoggerService }): Promise; } // @public @@ -172,7 +172,7 @@ export interface GithubMultiOrgEntityProviderOptions { githubCredentialsProvider?: GithubCredentialsProvider; githubUrl: string; id: string; - logger: Logger; + logger: LoggerService; orgs?: string[]; schedule?: 'manual' | TaskRunner; teamTransformer?: TeamTransformer; @@ -183,7 +183,7 @@ export interface GithubMultiOrgEntityProviderOptions { export class GithubMultiOrgReaderProcessor implements CatalogProcessor { constructor(options: { integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; orgs: GithubMultiOrgConfig; githubCredentialsProvider?: GithubCredentialsProvider; userTransformer?: UserTransformer; @@ -193,7 +193,7 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; userTransformer?: UserTransformer; teamTransformer?: TeamTransformer; @@ -227,7 +227,7 @@ export class GithubOrgEntityProvider id: string; orgUrl: string; gitHubConfig: GithubIntegrationConfig; - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; userTransformer?: UserTransformer; teamTransformer?: TeamTransformer; @@ -243,7 +243,7 @@ export class GithubOrgEntityProvider getProviderName(): string; // (undocumented) onEvent(params: EventParams): Promise; - read(options?: { logger?: Logger }): Promise; + read(options?: { logger?: LoggerService }): Promise; // (undocumented) supportsEventTopics(): string[]; } @@ -256,7 +256,7 @@ export interface GithubOrgEntityProviderOptions { events?: EventsService; githubCredentialsProvider?: GithubCredentialsProvider; id: string; - logger: Logger; + logger: LoggerService; orgUrl: string; schedule?: 'manual' | TaskRunner; teamTransformer?: TeamTransformer; @@ -267,14 +267,14 @@ export interface GithubOrgEntityProviderOptions { export class GithubOrgReaderProcessor implements CatalogProcessor { constructor(options: { integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; }); // (undocumented) static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; }, ): GithubOrgReaderProcessor; diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index 38c266f21e..185eb82780 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -66,8 +66,7 @@ "lodash": "^4.17.21", "minimatch": "^9.0.0", "node-fetch": "^2.6.7", - "uuid": "^9.0.0", - "winston": "^3.2.1" + "uuid": "^9.0.0" }, "devDependencies": { "@backstage/backend-test-utils": "workspace:^", diff --git a/plugins/catalog-backend-module-github/src/deprecated.ts b/plugins/catalog-backend-module-github/src/deprecated.ts index e27a856358..cd1d7db62a 100644 --- a/plugins/catalog-backend-module-github/src/deprecated.ts +++ b/plugins/catalog-backend-module-github/src/deprecated.ts @@ -20,12 +20,12 @@ import { EntityProvider, EntityProviderConnection, } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; import { GithubEntityProvider } from './providers/GithubEntityProvider'; import { GithubOrgEntityProvider, GithubOrgEntityProviderOptions, } from './providers/GithubOrgEntityProvider'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * @public @@ -57,7 +57,7 @@ export class GitHubEntityProvider implements EntityProvider { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -80,7 +80,7 @@ export class GitHubEntityProvider implements EntityProvider { return this.delegate.getProviderName(); } - refresh(logger: Logger): Promise { + refresh(logger: LoggerService): Promise { return this.delegate.refresh(logger); } } diff --git a/plugins/catalog-backend-module-github/src/module/githubCatalogModule.ts b/plugins/catalog-backend-module-github/src/module/githubCatalogModule.ts index 761e6ebdb2..0b46e1a023 100644 --- a/plugins/catalog-backend-module-github/src/module/githubCatalogModule.ts +++ b/plugins/catalog-backend-module-github/src/module/githubCatalogModule.ts @@ -15,10 +15,9 @@ */ import { - createBackendModule, coreServices, + createBackendModule, } from '@backstage/backend-plugin-api'; -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { catalogAnalysisExtensionPoint, catalogProcessingExtensionPoint, @@ -68,7 +67,7 @@ export const githubCatalogModule = createBackendModule({ catalog.addEntityProvider( GithubEntityProvider.fromConfig(config, { events, - logger: loggerToWinstonLogger(logger), + logger, scheduler, }), ); diff --git a/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.ts b/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.ts index 0907b8ac8d..551f1f9c38 100644 --- a/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.ts +++ b/plugins/catalog-backend-module-github/src/processors/GithubDiscoveryProcessor.ts @@ -28,8 +28,8 @@ import { processingResult, } from '@backstage/plugin-catalog-node'; import { graphql } from '@octokit/graphql'; -import { Logger } from 'winston'; import { getOrganizationRepositories } from '../lib'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Extracts repositories out of a GitHub org. @@ -49,13 +49,13 @@ import { getOrganizationRepositories } from '../lib'; */ export class GithubDiscoveryProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly githubCredentialsProvider: GithubCredentialsProvider; static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; }, ) { @@ -69,7 +69,7 @@ export class GithubDiscoveryProcessor implements CatalogProcessor { constructor(options: { integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; }) { this.integrations = options.integrations; diff --git a/plugins/catalog-backend-module-github/src/processors/GithubMultiOrgReaderProcessor.ts b/plugins/catalog-backend-module-github/src/processors/GithubMultiOrgReaderProcessor.ts index 8bfbd20e2e..8af528dfcf 100644 --- a/plugins/catalog-backend-module-github/src/processors/GithubMultiOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-github/src/processors/GithubMultiOrgReaderProcessor.ts @@ -36,7 +36,6 @@ import { processingResult, } from '@backstage/plugin-catalog-node'; import { graphql } from '@octokit/graphql'; -import { Logger } from 'winston'; import { assignGroupsToUsers, buildOrgHierarchy, @@ -50,6 +49,7 @@ import { UserTransformer, } from '../lib'; import { areGroupEntities, areUserEntities } from '../lib/guards'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Extracts teams and users out of a multiple GitHub orgs namespaced per org. @@ -61,13 +61,13 @@ import { areGroupEntities, areUserEntities } from '../lib/guards'; export class GithubMultiOrgReaderProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; private readonly orgs: GithubMultiOrgConfig; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly githubCredentialsProvider: GithubCredentialsProvider; static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; userTransformer?: UserTransformer; teamTransformer?: TeamTransformer; @@ -86,7 +86,7 @@ export class GithubMultiOrgReaderProcessor implements CatalogProcessor { constructor( private options: { integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; orgs: GithubMultiOrgConfig; githubCredentialsProvider?: GithubCredentialsProvider; userTransformer?: UserTransformer; diff --git a/plugins/catalog-backend-module-github/src/processors/GithubOrgReaderProcessor.ts b/plugins/catalog-backend-module-github/src/processors/GithubOrgReaderProcessor.ts index 63a273378b..49ff7cc07e 100644 --- a/plugins/catalog-backend-module-github/src/processors/GithubOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-github/src/processors/GithubOrgReaderProcessor.ts @@ -29,7 +29,6 @@ import { processingResult, } from '@backstage/plugin-catalog-node'; import { graphql } from '@octokit/graphql'; -import { Logger } from 'winston'; import { assignGroupsToUsers, buildOrgHierarchy, @@ -38,6 +37,7 @@ import { parseGithubOrgUrl, } from '../lib'; import { areGroupEntities, areUserEntities } from '../lib/guards'; +import { LoggerService } from '@backstage/backend-plugin-api'; type GraphQL = typeof graphql; @@ -52,13 +52,13 @@ type GraphQL = typeof graphql; */ export class GithubOrgReaderProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly githubCredentialsProvider: GithubCredentialsProvider; static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; }, ) { @@ -72,7 +72,7 @@ export class GithubOrgReaderProcessor implements CatalogProcessor { constructor(options: { integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; }) { this.integrations = options.integrations; diff --git a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts index 3c1e6c390b..b6805a1c24 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts @@ -18,9 +18,9 @@ import { PluginTaskScheduler, TaskRunner } from '@backstage/backend-tasks'; import { Config } from '@backstage/config'; import { GithubCredentialsProvider, - ScmIntegrations, - GithubIntegrationConfig, GithubIntegration, + GithubIntegrationConfig, + ScmIntegrations, SingleInstanceGithubCredentialsProvider, } from '@backstage/integration'; import { @@ -34,15 +34,14 @@ import { LocationSpec } from '@backstage/plugin-catalog-common'; import { graphql } from '@octokit/graphql'; import * as uuid from 'uuid'; -import { Logger } from 'winston'; import { - readProviderConfigs, GithubEntityProviderConfig, + readProviderConfigs, } from './GithubEntityProviderConfig'; import { getOrganizationRepositories } from '../lib/github'; import { - satisfiesTopicFilter, satisfiesForkFilter, + satisfiesTopicFilter, satisfiesVisibilityFilter, } from '../lib/util'; @@ -51,8 +50,9 @@ import { EventsService, EventSubscriber, } from '@backstage/plugin-events-node'; -import { PushEvent, Commit } from '@octokit/webhooks-types'; +import { Commit, PushEvent } from '@octokit/webhooks-types'; import { Minimatch } from 'minimatch'; +import { LoggerService } from '@backstage/backend-plugin-api'; const TOPIC_REPO_PUSH = 'github.push'; @@ -78,7 +78,7 @@ type Repository = { export class GithubEntityProvider implements EntityProvider, EventSubscriber { private readonly config: GithubEntityProviderConfig; private readonly events?: EventsService; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly integration: GithubIntegrationConfig; private readonly scheduleFn: () => Promise; private connection?: EntityProviderConnection; @@ -88,7 +88,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber { config: Config, options: { events?: EventsService; - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -132,7 +132,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber { private constructor( config: GithubEntityProviderConfig, integration: GithubIntegration, - logger: Logger, + logger: LoggerService, taskRunner: TaskRunner, events?: EventsService, ) { @@ -187,7 +187,7 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber { }; } - async refresh(logger: Logger) { + async refresh(logger: LoggerService) { if (!this.connection) { throw new Error('Not initialized'); } diff --git a/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts b/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts index 78c12d92cf..d5c073a89d 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts @@ -25,7 +25,7 @@ import { GithubMultiOrgEntityProvider, withLocations, } from './GithubMultiOrgEntityProvider'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; jest.mock('@octokit/graphql'); @@ -43,7 +43,7 @@ describe('GithubMultiOrgEntityProvider', () => { describe('read', () => { let mockClient: jest.Mock; let entityProviderConnection: EntityProviderConnection; - let logger: Logger; + let logger: LoggerService; let gitHubConfig: { host: string }; let mockGetCredentials: jest.Mock; let entityProvider: GithubMultiOrgEntityProvider; diff --git a/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.ts b/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.ts index edbbcc4c2c..0f3b7a5b79 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.ts @@ -47,10 +47,10 @@ import { graphql } from '@octokit/graphql'; import { InstallationCreatedEvent, InstallationEvent, + MembershipEvent, OrganizationEvent, OrganizationMemberAddedEvent, OrganizationMemberRemovedEvent, - MembershipEvent, TeamCreatedEvent, TeamDeletedEvent, TeamEditedEvent, @@ -58,7 +58,6 @@ import { } from '@octokit/webhooks-types'; import { merge } from 'lodash'; import * as uuid from 'uuid'; -import { Logger } from 'winston'; import { assignGroupsToUsers, @@ -83,6 +82,7 @@ import { } from '../lib/github'; import { splitTeamSlug } from '../lib/util'; import { areGroupEntities, areUserEntities } from '../lib/guards'; +import { LoggerService } from '@backstage/backend-plugin-api'; const EVENT_TOPICS = [ 'github.installation', @@ -140,7 +140,7 @@ export interface GithubMultiOrgEntityProviderOptions { /** * The logger to use. */ - logger: Logger; + logger: LoggerService; /** * Optionally supply a custom credentials provider, replacing the default one. @@ -230,7 +230,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider { gitHubConfig: GithubIntegrationConfig; githubCredentialsProvider: GithubCredentialsProvider; githubUrl: string; - logger: Logger; + logger: LoggerService; orgs?: string[]; userTransformer?: UserTransformer; teamTransformer?: TeamTransformer; @@ -257,7 +257,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider { * Runs one single complete ingestion. This is only necessary if you use * manual scheduling. */ - async read(options?: { logger?: Logger }) { + async read(options?: { logger?: LoggerService }) { if (!this.connection) { throw new Error('Not initialized'); } @@ -925,7 +925,7 @@ export class GithubMultiOrgEntityProvider implements EntityProvider { } // Helps wrap the timing and logging behaviors -function trackProgress(logger: Logger) { +function trackProgress(logger: LoggerService) { let timestamp = Date.now(); let summary: string; diff --git a/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.ts b/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.ts index b7fc341694..f23ef8a98b 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.ts @@ -43,28 +43,28 @@ import { TeamEvent, } from '@octokit/webhooks-types'; import * as uuid from 'uuid'; -import { Logger } from 'winston'; import { - TeamTransformer, - UserTransformer, defaultOrganizationTeamTransformer, defaultUserTransformer, + TeamTransformer, + UserTransformer, } from '../lib/defaultTransformers'; import { - DeferredEntitiesBuilder, - GithubTeam, createAddEntitiesOperation, createRemoveEntitiesOperation, createReplaceEntitiesOperation, + DeferredEntitiesBuilder, getOrganizationTeam, getOrganizationTeams, getOrganizationTeamsFromUsers, getOrganizationUsers, + GithubTeam, } from '../lib/github'; import { assignGroupsToUsers, buildOrgHierarchy } from '../lib/org'; import { parseGithubOrgUrl } from '../lib/util'; import { withLocations } from '../lib/withLocations'; import { areGroupEntities, areUserEntities } from '../lib/guards'; +import { LoggerService } from '@backstage/backend-plugin-api'; const EVENT_TOPICS = [ 'github.membership', @@ -115,7 +115,7 @@ export interface GithubOrgEntityProviderOptions { /** * The logger to use. */ - logger: Logger; + logger: LoggerService; /** * Optionally supply a custom credentials provider, replacing the default one. @@ -183,7 +183,7 @@ export class GithubOrgEntityProvider id: string; orgUrl: string; gitHubConfig: GithubIntegrationConfig; - logger: Logger; + logger: LoggerService; githubCredentialsProvider?: GithubCredentialsProvider; userTransformer?: UserTransformer; teamTransformer?: TeamTransformer; @@ -214,7 +214,7 @@ export class GithubOrgEntityProvider * Runs one single complete ingestion. This is only necessary if you use * manual scheduling. */ - async read(options?: { logger?: Logger }) { + async read(options?: { logger?: LoggerService }) { if (!this.connection) { throw new Error('Not initialized'); } @@ -618,7 +618,7 @@ export class GithubOrgEntityProvider } // Helps wrap the timing and logging behaviors -function trackProgress(logger: Logger) { +function trackProgress(logger: LoggerService) { let timestamp = Date.now(); let summary: string; diff --git a/plugins/catalog-backend-module-gitlab/api-report.md b/plugins/catalog-backend-module-gitlab/api-report.md index 6c26e28604..cd9ade4bfb 100644 --- a/plugins/catalog-backend-module-gitlab/api-report.md +++ b/plugins/catalog-backend-module-gitlab/api-report.md @@ -11,7 +11,7 @@ import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { GitLabIntegrationConfig } from '@backstage/integration'; import { GroupEntity } from '@backstage/catalog-model'; import { LocationSpec } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { TaskRunner } from '@backstage/backend-tasks'; import { TaskScheduleDefinition } from '@backstage/backend-tasks'; @@ -25,7 +25,7 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -33,7 +33,7 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider { // (undocumented) getProviderName(): string; // (undocumented) - refresh(logger: Logger): Promise; + refresh(logger: LoggerService): Promise; } // @public @@ -42,7 +42,7 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; skipReposWithoutExactFileMatch?: boolean; skipForkedRepos?: boolean; }, @@ -80,7 +80,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; userTransformer?: UserTransformer; diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index 7c20287e2c..6a962fecb6 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -54,8 +54,7 @@ "@backstage/plugin-catalog-node": "workspace:^", "lodash": "^4.17.21", "node-fetch": "^2.6.7", - "uuid": "^9.0.0", - "winston": "^3.2.1" + "uuid": "^9.0.0" }, "devDependencies": { "@backstage/backend-test-utils": "workspace:^", diff --git a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts index 02b1b1cb51..b8e0cf3669 100644 --- a/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts +++ b/plugins/catalog-backend-module-gitlab/src/GitLabDiscoveryProcessor.ts @@ -30,8 +30,8 @@ import { LocationSpec, processingResult, } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; import { GitLabClient, GitLabProject, paginated } from './lib'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Extracts repositories out of an GitLab instance. @@ -39,7 +39,7 @@ import { GitLabClient, GitLabProject, paginated } from './lib'; */ export class GitLabDiscoveryProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly cache: CacheClient; private readonly skipReposWithoutExactFileMatch: boolean; private readonly skipForkedRepos: boolean; @@ -47,7 +47,7 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; skipReposWithoutExactFileMatch?: boolean; skipForkedRepos?: boolean; }, @@ -66,7 +66,7 @@ export class GitLabDiscoveryProcessor implements CatalogProcessor { private constructor(options: { integrations: ScmIntegrationRegistry; pluginCache: PluginCacheManager; - logger: Logger; + logger: LoggerService; skipReposWithoutExactFileMatch?: boolean; skipForkedRepos?: boolean; }) { diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.ts index d69c99c777..cc2b2362cd 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.ts @@ -18,7 +18,7 @@ import { GitLabIntegrationConfig, } from '@backstage/integration'; import fetch from 'node-fetch'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { GitLabDescendantGroupsResponse, @@ -47,9 +47,12 @@ interface UserListOptions extends CommonListOptions { export class GitLabClient { private readonly config: GitLabIntegrationConfig; - private readonly logger: Logger; + private readonly logger: LoggerService; - constructor(options: { config: GitLabIntegrationConfig; logger: Logger }) { + constructor(options: { + config: GitLabIntegrationConfig; + logger: LoggerService; + }) { this.config = options.config; this.logger = options.logger; } diff --git a/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.ts index 9979d0862e..a1b24e4eea 100644 --- a/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/module/catalogModuleGitlabDiscoveryEntityProvider.ts @@ -15,10 +15,9 @@ */ import { - createBackendModule, coreServices, + createBackendModule, } from '@backstage/backend-plugin-api'; -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha'; import { GitlabDiscoveryEntityProvider } from '../providers'; @@ -41,7 +40,7 @@ export const catalogModuleGitlabDiscoveryEntityProvider = createBackendModule({ async init({ config, catalog, logger, scheduler }) { catalog.addEntityProvider( GitlabDiscoveryEntityProvider.fromConfig(config, { - logger: loggerToWinstonLogger(logger), + logger, scheduler, }), ); diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.ts index 32da64f819..ae8fe4e12c 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabDiscoveryEntityProvider.ts @@ -24,7 +24,6 @@ import { locationSpecToLocationEntity, } from '@backstage/plugin-catalog-node'; import * as uuid from 'uuid'; -import { Logger } from 'winston'; import { GitLabClient, GitLabProject, @@ -32,6 +31,7 @@ import { paginated, readGitlabConfigs, } from '../lib'; +import { LoggerService } from '@backstage/backend-plugin-api'; type Result = { scanned: number; @@ -45,14 +45,14 @@ type Result = { export class GitlabDiscoveryEntityProvider implements EntityProvider { private readonly config: GitlabProviderConfig; private readonly integration: GitLabIntegration; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly scheduleFn: () => Promise; private connection?: EntityProviderConnection; static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; }, @@ -98,7 +98,7 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider { private constructor(options: { config: GitlabProviderConfig; integration: GitLabIntegration; - logger: Logger; + logger: LoggerService; taskRunner: TaskRunner; }) { this.config = options.config; @@ -143,7 +143,7 @@ export class GitlabDiscoveryEntityProvider implements EntityProvider { }; } - async refresh(logger: Logger): Promise { + async refresh(logger: LoggerService): Promise { if (!this.connection) { throw new Error( `Gitlab discovery connection not initialized for ${this.getProviderName()}`, diff --git a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts index 1157a2f1f3..90a7a14b6b 100644 --- a/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab/src/providers/GitlabOrgDiscoveryEntityProvider.ts @@ -27,7 +27,7 @@ import { } from '@backstage/plugin-catalog-node'; import { merge } from 'lodash'; import * as uuid from 'uuid'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { GitLabClient, @@ -38,14 +38,14 @@ import { import { GitLabGroup, GitLabUser, + GroupNameTransformer, + GroupTransformer as GroupEntitiesTransformer, PagedResponse, UserTransformer, - GroupTransformer as GroupEntitiesTransformer, - GroupNameTransformer, } from '../lib/types'; import { - defaultGroupNameTransformer, defaultGroupEntitiesTransformer, + defaultGroupNameTransformer, defaultUserTransformer, } from '../lib/defaultTransformers'; @@ -66,7 +66,7 @@ type GroupResult = { export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { private readonly config: GitlabProviderConfig; private readonly integration: GitLabIntegration; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly scheduleFn: () => Promise; private connection?: EntityProviderConnection; private userTransformer: UserTransformer; @@ -76,7 +76,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; userTransformer?: UserTransformer; @@ -136,7 +136,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { private constructor(options: { config: GitlabProviderConfig; integration: GitLabIntegration; - logger: Logger; + logger: LoggerService; taskRunner: TaskRunner; userTransformer?: UserTransformer; groupEntitiesTransformer?: GroupEntitiesTransformer; @@ -189,7 +189,7 @@ export class GitlabOrgDiscoveryEntityProvider implements EntityProvider { }; } - private async refresh(logger: Logger): Promise { + private async refresh(logger: LoggerService): Promise { if (!this.connection) { throw new Error( `Gitlab discovery connection not initialized for ${this.getProviderName()}`, diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json index 163f2511c7..8eea6b9d92 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/package.json +++ b/plugins/catalog-backend-module-incremental-ingestion/package.json @@ -65,8 +65,7 @@ "express-promise-router": "^4.1.0", "knex": "^3.0.0", "luxon": "^3.0.0", - "uuid": "^9.0.0", - "winston": "^3.2.1" + "uuid": "^9.0.0" }, "devDependencies": { "@backstage/backend-defaults": "workspace:^", diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts b/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts index cc2954ea05..b26cfe0baf 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts @@ -15,11 +15,10 @@ */ import { - RootConfigService, LoggerService, + RootConfigService, SchedulerService, } from '@backstage/backend-plugin-api'; -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { stringifyError } from '@backstage/errors'; import { EntityProvider, @@ -77,7 +76,7 @@ export class WrapperProviders { async adminRouter(): Promise { return await new IncrementalProviderRouter( new IncrementalIngestionDatabaseManager({ client: this.options.client }), - loggerToWinstonLogger(this.options.logger), + this.options.logger, ).createRouter(); } @@ -86,11 +85,9 @@ export class WrapperProviders { providerOptions: IncrementalEntityProviderOptions, connection: EntityProviderConnection, ) { - const logger = loggerToWinstonLogger( - this.options.logger.child({ - entityProvider: provider.getProviderName(), - }), - ); + const logger = this.options.logger.child({ + entityProvider: provider.getProviderName(), + }); try { if (!this.migrate) { diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/router/routes.ts b/plugins/catalog-backend-module-incremental-ingestion/src/router/routes.ts index 4a89467a93..d3ccb8863b 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/router/routes.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/router/routes.ts @@ -17,14 +17,17 @@ import { errorHandler } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { IncrementalIngestionDatabaseManager } from '../database/IncrementalIngestionDatabaseManager'; +import { LoggerService } from '@backstage/backend-plugin-api'; export class IncrementalProviderRouter { private manager: IncrementalIngestionDatabaseManager; - private logger: Logger; + private logger: LoggerService; - constructor(manager: IncrementalIngestionDatabaseManager, logger: Logger) { + constructor( + manager: IncrementalIngestionDatabaseManager, + logger: LoggerService, + ) { this.manager = manager; this.logger = logger; } diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/types.ts b/plugins/catalog-backend-module-incremental-ingestion/src/types.ts index 68ad2b8b04..78309afb36 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/types.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/types.ts @@ -32,6 +32,7 @@ import type { PermissionEvaluator } from '@backstage/plugin-permission-common'; import type { DurationObjectUnits } from 'luxon'; import type { Logger } from 'winston'; import { IncrementalIngestionDatabaseManager } from './database/IncrementalIngestionDatabaseManager'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Ingest entities into the catalog in bite-sized chunks. @@ -200,7 +201,7 @@ export interface IterationEngine { } export interface IterationEngineOptions { - logger: Logger; + logger: LoggerService; connection: EntityProviderConnection; manager: IncrementalIngestionDatabaseManager; provider: IncrementalEntityProvider; diff --git a/plugins/catalog-backend-module-msgraph/api-report.md b/plugins/catalog-backend-module-msgraph/api-report.md index 911564d160..86170e2910 100644 --- a/plugins/catalog-backend-module-msgraph/api-report.md +++ b/plugins/catalog-backend-module-msgraph/api-report.md @@ -10,7 +10,7 @@ import { EntityProvider } from '@backstage/plugin-catalog-node'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { GroupEntity } from '@backstage/catalog-model'; import { LocationSpec } from '@backstage/plugin-catalog-common'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import * as MicrosoftGraph from '@microsoft/microsoft-graph-types'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { Response as Response_2 } from 'node-fetch'; @@ -122,7 +122,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { constructor(options: { id: string; provider: MicrosoftGraphProviderConfig; - logger: Logger; + logger: LoggerService; userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; organizationTransformer?: OrganizationTransformer; @@ -136,14 +136,14 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { ): MicrosoftGraphOrgEntityProvider[]; // (undocumented) getProviderName(): string; - read(options?: { logger?: Logger }): Promise; + read(options?: { logger?: LoggerService }): Promise; } // @public @deprecated export interface MicrosoftGraphOrgEntityProviderLegacyOptions { groupTransformer?: GroupTransformer; id: string; - logger: Logger; + logger: LoggerService; organizationTransformer?: OrganizationTransformer; schedule: 'manual' | TaskRunner; target: string; @@ -154,7 +154,7 @@ export interface MicrosoftGraphOrgEntityProviderLegacyOptions { export type MicrosoftGraphOrgEntityProviderOptions = | MicrosoftGraphOrgEntityProviderLegacyOptions | { - logger: Logger; + logger: LoggerService; schedule?: 'manual' | TaskRunner; scheduler?: PluginTaskScheduler; userTransformer?: UserTransformer | Record; @@ -168,7 +168,7 @@ export type MicrosoftGraphOrgEntityProviderOptions = export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { constructor(options: { providers: MicrosoftGraphProviderConfig[]; - logger: Logger; + logger: LoggerService; userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; organizationTransformer?: OrganizationTransformer; @@ -177,7 +177,7 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; organizationTransformer?: OrganizationTransformer; @@ -257,7 +257,7 @@ export function readMicrosoftGraphOrg( userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; organizationTransformer?: OrganizationTransformer; - logger: Logger; + logger: LoggerService; }, ): Promise<{ users: UserEntity[]; diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index 0cf7d84ac7..bab2f78f98 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -63,8 +63,7 @@ "node-fetch": "^2.6.7", "p-limit": "^3.0.2", "qs": "^6.9.4", - "uuid": "^9.0.0", - "winston": "^3.2.1" + "uuid": "^9.0.0" }, "devDependencies": { "@backstage/backend-common": "workspace:^", diff --git a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts index 68fe2280b9..0f3d81c224 100644 --- a/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts +++ b/plugins/catalog-backend-module-msgraph/src/microsoftGraph/read.ts @@ -20,7 +20,6 @@ import { UserEntity, } from '@backstage/catalog-model'; import limiterFactory from 'p-limit'; -import { Logger } from 'winston'; import { MicrosoftGraphClient } from './client'; import { MICROSOFT_GRAPH_GROUP_ID_ANNOTATION, @@ -39,6 +38,7 @@ import { defaultUserTransformer, } from './defaultTransformers'; import * as MicrosoftGraph from '@microsoft/microsoft-graph-types'; +import { LoggerService } from '@backstage/backend-plugin-api'; const PAGE_SIZE = 999; @@ -51,7 +51,7 @@ export async function readMicrosoftGraphUsers( userSelect?: string[]; loadUserPhotos?: boolean; transformer?: UserTransformer; - logger: Logger; + logger: LoggerService; }, ): Promise<{ users: UserEntity[]; // With all relations empty @@ -89,7 +89,7 @@ export async function readMicrosoftGraphUsersInGroups( userGroupMemberFilter?: string; groupExpand?: string; transformer?: UserTransformer; - logger: Logger; + logger: LoggerService; }, ): Promise<{ users: UserEntity[]; // With all relations empty @@ -381,7 +381,7 @@ export async function readMicrosoftGraphOrg( userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; organizationTransformer?: OrganizationTransformer; - logger: Logger; + logger: LoggerService; }, ): Promise<{ users: UserEntity[]; groups: GroupEntity[] }> { const users: UserEntity[] = []; @@ -435,7 +435,7 @@ export async function readMicrosoftGraphOrg( async function transformUsers( client: MicrosoftGraphClient, users: Iterable | AsyncIterable, - logger: Logger, + logger: LoggerService, loadUserPhotos = true, transformer?: UserTransformer, ) { diff --git a/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.ts b/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.ts index f13081d3c6..193f07889f 100644 --- a/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-msgraph/src/module/catalogModuleMicrosoftGraphOrgEntityProvider.ts @@ -19,7 +19,6 @@ import { createBackendModule, createExtensionPoint, } from '@backstage/backend-plugin-api'; -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha'; import { GroupTransformer, @@ -130,7 +129,7 @@ export const catalogModuleMicrosoftGraphOrgEntityProvider = createBackendModule( async init({ catalog, config, logger, scheduler }) { catalog.addEntityProvider( MicrosoftGraphOrgEntityProvider.fromConfig(config, { - logger: loggerToWinstonLogger(logger), + logger, scheduler, userTransformer: userTransformer, groupTransformer: groupTransformer, diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts index 160696e2e7..9c804216e4 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgEntityProvider.ts @@ -27,20 +27,20 @@ import { } from '@backstage/plugin-catalog-node'; import { merge } from 'lodash'; import * as uuid from 'uuid'; -import { Logger } from 'winston'; import { GroupTransformer, - MicrosoftGraphClient, - MicrosoftGraphProviderConfig, MICROSOFT_GRAPH_GROUP_ID_ANNOTATION, MICROSOFT_GRAPH_TENANT_ID_ANNOTATION, MICROSOFT_GRAPH_USER_ID_ANNOTATION, + MicrosoftGraphClient, + MicrosoftGraphProviderConfig, OrganizationTransformer, readMicrosoftGraphConfig, readMicrosoftGraphOrg, UserTransformer, } from '../microsoftGraph'; import { readProviderConfigs } from '../microsoftGraph/config'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Options for {@link MicrosoftGraphOrgEntityProvider}. @@ -53,7 +53,7 @@ export type MicrosoftGraphOrgEntityProviderOptions = /** * The logger to use. */ - logger: Logger; + logger: LoggerService; /** * The refresh schedule to use. @@ -122,7 +122,7 @@ export interface MicrosoftGraphOrgEntityProviderLegacyOptions { /** * The logger to use. */ - logger: Logger; + logger: LoggerService; /** * The refresh schedule to use. @@ -272,7 +272,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { private options: { id: string; provider: MicrosoftGraphProviderConfig; - logger: Logger; + logger: LoggerService; userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; organizationTransformer?: OrganizationTransformer; @@ -294,7 +294,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { * Runs one complete ingestion loop. Call this method regularly at some * appropriate cadence. */ - async read(options?: { logger?: Logger }) { + async read(options?: { logger?: LoggerService }) { if (!this.connection) { throw new Error('Not initialized'); } @@ -364,7 +364,7 @@ export class MicrosoftGraphOrgEntityProvider implements EntityProvider { } // Helps wrap the timing and logging behaviors -function trackProgress(logger: Logger) { +function trackProgress(logger: LoggerService) { let timestamp = Date.now(); let summary: string; diff --git a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts index d9119a3c4d..570959a381 100644 --- a/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts +++ b/plugins/catalog-backend-module-msgraph/src/processors/MicrosoftGraphOrgReaderProcessor.ts @@ -21,7 +21,6 @@ import { processingResult, } from '@backstage/plugin-catalog-node'; import { LocationSpec } from '@backstage/plugin-catalog-common'; -import { Logger } from 'winston'; import { GroupTransformer, MicrosoftGraphClient, @@ -31,6 +30,7 @@ import { readMicrosoftGraphOrg, UserTransformer, } from '../microsoftGraph'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Extracts teams and users out of the Microsoft Graph API. @@ -40,7 +40,7 @@ import { */ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { private readonly providers: MicrosoftGraphProviderConfig[]; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly userTransformer?: UserTransformer; private readonly groupTransformer?: GroupTransformer; private readonly organizationTransformer?: OrganizationTransformer; @@ -48,7 +48,7 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; organizationTransformer?: OrganizationTransformer; @@ -63,7 +63,7 @@ export class MicrosoftGraphOrgReaderProcessor implements CatalogProcessor { constructor(options: { providers: MicrosoftGraphProviderConfig[]; - logger: Logger; + logger: LoggerService; userTransformer?: UserTransformer; groupTransformer?: GroupTransformer; organizationTransformer?: OrganizationTransformer; diff --git a/plugins/catalog-backend-module-puppetdb/api-report.md b/plugins/catalog-backend-module-puppetdb/api-report.md index 16c4ab7fb2..3361313392 100644 --- a/plugins/catalog-backend-module-puppetdb/api-report.md +++ b/plugins/catalog-backend-module-puppetdb/api-report.md @@ -7,7 +7,7 @@ import { Config } from '@backstage/config'; import { EntityProvider } from '@backstage/plugin-catalog-node'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; import { JsonValue } from '@backstage/types'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { ResourceEntity } from '@backstage/catalog-model'; import { TaskRunner } from '@backstage/backend-tasks'; @@ -29,7 +29,7 @@ export class PuppetDbEntityProvider implements EntityProvider { static fromConfig( config: Config, deps: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; transformer?: ResourceTransformer; @@ -37,7 +37,7 @@ export class PuppetDbEntityProvider implements EntityProvider { ): PuppetDbEntityProvider[]; // (undocumented) getProviderName(): string; - refresh(logger: Logger): Promise; + refresh(logger: LoggerService): Promise; } // @public diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index 987ba9c18c..ee894f9e4e 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -62,8 +62,7 @@ "lodash": "^4.17.21", "luxon": "^3.0.0", "node-fetch": "^2.6.7", - "uuid": "^9.0.0", - "winston": "^3.2.1" + "uuid": "^9.0.0" }, "devDependencies": { "@backstage/backend-test-utils": "workspace:^", diff --git a/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.ts b/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.ts index aad28eb47a..aa524f2409 100644 --- a/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.ts +++ b/plugins/catalog-backend-module-puppetdb/src/module/catalogModulePuppetDbEntityProvider.ts @@ -15,10 +15,9 @@ */ import { - createBackendModule, coreServices, + createBackendModule, } from '@backstage/backend-plugin-api'; -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha'; import { PuppetDbEntityProvider } from '../providers/PuppetDbEntityProvider'; @@ -41,7 +40,7 @@ export const catalogModulePuppetDbEntityProvider = createBackendModule({ async init({ catalog, config, logger, scheduler }) { catalog.addEntityProvider( PuppetDbEntityProvider.fromConfig(config, { - logger: loggerToWinstonLogger(logger), + logger, scheduler, }), ); diff --git a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts index 0055e95589..0496cc033b 100644 --- a/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts +++ b/plugins/catalog-backend-module-puppetdb/src/providers/PuppetDbEntityProvider.ts @@ -18,7 +18,6 @@ import { EntityProvider, EntityProviderConnection, } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; import { PuppetDbEntityProviderConfig, readProviderConfigs, @@ -26,7 +25,7 @@ import { import { Config } from '@backstage/config'; import { PluginTaskScheduler, TaskRunner } from '@backstage/backend-tasks'; import * as uuid from 'uuid'; -import { ResourceTransformer, defaultResourceTransformer } from '../puppet'; +import { defaultResourceTransformer, ResourceTransformer } from '../puppet'; import { ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, @@ -35,6 +34,7 @@ import { import { merge } from 'lodash'; import { readPuppetNodes } from '../puppet/read'; import { ENDPOINT_NODES } from '../puppet/constants'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Reads nodes from [PuppetDB](https://www.puppet.com/docs/puppet/6/puppetdb_overview.html) @@ -44,7 +44,7 @@ import { ENDPOINT_NODES } from '../puppet/constants'; */ export class PuppetDbEntityProvider implements EntityProvider { private readonly config: PuppetDbEntityProviderConfig; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly scheduleFn: () => Promise; private readonly transformer: ResourceTransformer; private connection?: EntityProviderConnection; @@ -60,7 +60,7 @@ export class PuppetDbEntityProvider implements EntityProvider { static fromConfig( config: Config, deps: { - logger: Logger; + logger: LoggerService; schedule?: TaskRunner; scheduler?: PluginTaskScheduler; transformer?: ResourceTransformer; @@ -96,7 +96,7 @@ export class PuppetDbEntityProvider implements EntityProvider { * Creates an instance of {@link PuppetDbEntityProvider}. * * @param config - Configuration of the provider. - * @param logger - The instance of a {@link Logger}. + * @param logger - The instance of a {@link LoggerService}. * @param taskRunner - The instance of {@link TaskRunner}. * @param transformer - A {@link ResourceTransformer} function. * @@ -104,7 +104,7 @@ export class PuppetDbEntityProvider implements EntityProvider { */ private constructor( config: PuppetDbEntityProviderConfig, - logger: Logger, + logger: LoggerService, taskRunner: TaskRunner, transformer: ResourceTransformer, ) { @@ -163,7 +163,7 @@ export class PuppetDbEntityProvider implements EntityProvider { * * @param logger - The instance of a Logger. */ - async refresh(logger: Logger) { + async refresh(logger: LoggerService) { if (!this.connection) { throw new Error('Not initialized'); } @@ -213,9 +213,9 @@ function withLocations(baseUrl: string, entity: Entity): Entity { /** * Tracks the progress of the PuppetDB read and commit operations. * - * @param logger - The instance of a {@link Logger}. + * @param logger - The instance of a {@link LoggerService}. */ -function trackProgress(logger: Logger) { +function trackProgress(logger: LoggerService) { let timestamp = Date.now(); function markReadComplete(entities: Entity[]) { diff --git a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts index ab3e85370a..18a6eb077f 100644 --- a/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts +++ b/plugins/catalog-backend-module-puppetdb/src/puppet/read.ts @@ -21,7 +21,7 @@ import { defaultResourceTransformer } from './transformers'; import fetch from 'node-fetch'; import { ResponseError } from '@backstage/errors'; import { ENDPOINT_FACTSETS } from './constants'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Reads nodes and their facts from PuppetDB. @@ -33,7 +33,7 @@ export async function readPuppetNodes( config: PuppetDbEntityProviderConfig, opts?: { transformer?: ResourceTransformer; - logger?: Logger; + logger?: LoggerService; }, ): Promise { const transformFn = opts?.transformer ?? defaultResourceTransformer; diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index 56a2506bd6..27c00257a5 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -44,7 +44,7 @@ import { HttpAuthService } from '@backstage/backend-plugin-api'; import { LocationSpec as LocationSpec_2 } from '@backstage/plugin-catalog-common'; import { locationSpecToLocationEntity as locationSpecToLocationEntity_2 } from '@backstage/plugin-catalog-node'; import { locationSpecToMetadataName as locationSpecToMetadataName_2 } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { Permission } from '@backstage/plugin-permission-common'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; import { PermissionRule } from '@backstage/plugin-permission-node'; @@ -192,7 +192,7 @@ export type CatalogCollatorEntityTransformer = // @public (undocumented) export type CatalogEnvironment = { - logger: Logger; + logger: LoggerService; database: PluginDatabaseManager; config: Config; reader: UrlReader; @@ -251,14 +251,14 @@ export type CatalogProcessorResult = CatalogProcessorResult_2; export class CodeOwnersProcessor implements CatalogProcessor_2 { constructor(options: { integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; reader: UrlReader; }); // (undocumented) static fromConfig( config: Config, options: { - logger: Logger; + logger: LoggerService; reader: UrlReader; }, ): CodeOwnersProcessor; @@ -467,7 +467,7 @@ export function transformLegacyPolicyToProcessor( // @public (undocumented) export class UrlReaderProcessor implements CatalogProcessor_2 { - constructor(options: { reader: UrlReader; logger: Logger }); + constructor(options: { reader: UrlReader; logger: LoggerService }); // (undocumented) getProcessorName(): string; // (undocumented) diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index b2106511c3..208abd9882 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -85,7 +85,6 @@ "p-limit": "^3.0.2", "prom-client": "^15.0.0", "uuid": "^9.0.0", - "winston": "^3.2.1", "yaml": "^2.0.0", "yn": "^4.0.0", "zod": "^3.22.4" @@ -105,7 +104,8 @@ "luxon": "^3.0.0", "msw": "^1.0.0", "supertest": "^6.1.3", - "wait-for-expect": "^3.0.2" + "wait-for-expect": "^3.0.2", + "winston": "^3.13.0" }, "configSchema": "config.d.ts" } diff --git a/plugins/catalog-backend/src/database/DefaultCatalogDatabase.test.ts b/plugins/catalog-backend/src/database/DefaultCatalogDatabase.test.ts index ebcdc77287..a537168bcf 100644 --- a/plugins/catalog-backend/src/database/DefaultCatalogDatabase.test.ts +++ b/plugins/catalog-backend/src/database/DefaultCatalogDatabase.test.ts @@ -14,22 +14,25 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; -import { Logger } from 'winston'; +import { + mockServices, + TestDatabaseId, + TestDatabases, +} from '@backstage/backend-test-utils'; import { DefaultCatalogDatabase } from './DefaultCatalogDatabase'; import { applyDatabaseMigrations } from './migrations'; import { DbRefreshStateReferencesRow, DbRefreshStateRow } from './tables'; +import { LoggerService } from '@backstage/backend-plugin-api'; jest.setTimeout(60_000); describe('DefaultCatalogDatabase', () => { - const defaultLogger = getVoidLogger(); + const defaultLogger = mockServices.logger.mock(); const databases = TestDatabases.create(); async function createDatabase( databaseId: TestDatabaseId, - logger: Logger = defaultLogger, + logger: LoggerService = defaultLogger, ) { const knex = await databases.init(databaseId); await applyDatabaseMigrations(knex); diff --git a/plugins/catalog-backend/src/database/DefaultCatalogDatabase.ts b/plugins/catalog-backend/src/database/DefaultCatalogDatabase.ts index 98b100c91e..354391ce15 100644 --- a/plugins/catalog-backend/src/database/DefaultCatalogDatabase.ts +++ b/plugins/catalog-backend/src/database/DefaultCatalogDatabase.ts @@ -16,16 +16,16 @@ import { NotFoundError } from '@backstage/errors'; import { Knex } from 'knex'; -import type { Logger } from 'winston'; import { CatalogDatabase, ListAncestorsOptions, ListAncestorsResult, RefreshOptions, + Transaction, } from './types'; import { DbRefreshStateReferencesRow, DbRefreshStateRow } from './tables'; import { rethrowError } from './conversion'; -import { Transaction } from './types'; +import { LoggerService } from '@backstage/backend-plugin-api'; const MAX_ANCESTOR_DEPTH = 32; @@ -33,7 +33,7 @@ export class DefaultCatalogDatabase implements CatalogDatabase { constructor( private readonly options: { database: Knex; - logger: Logger; + logger: LoggerService; }, ) {} diff --git a/plugins/catalog-backend/src/database/DefaultProcessingDatabase.test.ts b/plugins/catalog-backend/src/database/DefaultProcessingDatabase.test.ts index 71095adefc..9110dca640 100644 --- a/plugins/catalog-backend/src/database/DefaultProcessingDatabase.test.ts +++ b/plugins/catalog-backend/src/database/DefaultProcessingDatabase.test.ts @@ -14,8 +14,11 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; +import { + mockServices, + TestDatabaseId, + TestDatabases, +} from '@backstage/backend-test-utils'; import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; import { Knex } from 'knex'; import * as uuid from 'uuid'; @@ -32,16 +35,17 @@ import { import { createRandomProcessingInterval } from '../processing'; import { timestampToDateTime } from './conversion'; import { generateStableHash } from './util'; +import { LoggerService } from '@backstage/backend-plugin-api'; jest.setTimeout(60_000); describe('DefaultProcessingDatabase', () => { - const defaultLogger = getVoidLogger(); + const defaultLogger = mockServices.logger.mock(); const databases = TestDatabases.create(); async function createDatabase( databaseId: TestDatabaseId, - logger: Logger = defaultLogger, + logger: LoggerService = defaultLogger, ) { const knex = await databases.init(databaseId); await applyDatabaseMigrations(knex); diff --git a/plugins/catalog-backend/src/database/DefaultProcessingDatabase.ts b/plugins/catalog-backend/src/database/DefaultProcessingDatabase.ts index 6eea03e0d9..3eb6b5e8ce 100644 --- a/plugins/catalog-backend/src/database/DefaultProcessingDatabase.ts +++ b/plugins/catalog-backend/src/database/DefaultProcessingDatabase.ts @@ -19,7 +19,6 @@ import { ConflictError } from '@backstage/errors'; import { DeferredEntity } from '@backstage/plugin-catalog-node'; import { Knex } from 'knex'; import lodash from 'lodash'; -import type { Logger } from 'winston'; import { ProcessingIntervalFunction } from '../processing'; import { rethrowError, timestampToDateTime } from './conversion'; import { initDatabaseMetrics } from './metrics'; @@ -47,6 +46,7 @@ import { EventBroker, EventParams } from '@backstage/plugin-events-node'; import { DateTime } from 'luxon'; import { CATALOG_CONFLICTS_TOPIC } from '../constants'; import { CatalogConflictEventPayload } from '../catalog/types'; +import { LoggerService } from '@backstage/backend-plugin-api'; // The number of items that are sent per batch to the database layer, when // doing .batchInsert calls to knex. This needs to be low enough to not cause @@ -58,7 +58,7 @@ export class DefaultProcessingDatabase implements ProcessingDatabase { constructor( private readonly options: { database: Knex; - logger: Logger; + logger: LoggerService; refreshInterval: ProcessingIntervalFunction; eventBroker?: EventBroker; }, diff --git a/plugins/catalog-backend/src/database/DefaultProviderDatabase.test.ts b/plugins/catalog-backend/src/database/DefaultProviderDatabase.test.ts index 0d124b6d33..0218d25a18 100644 --- a/plugins/catalog-backend/src/database/DefaultProviderDatabase.test.ts +++ b/plugins/catalog-backend/src/database/DefaultProviderDatabase.test.ts @@ -14,25 +14,28 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; -import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; +import { + mockServices, + TestDatabaseId, + TestDatabases, +} from '@backstage/backend-test-utils'; import { Entity } from '@backstage/catalog-model'; import { Knex } from 'knex'; import * as uuid from 'uuid'; -import { Logger } from 'winston'; import { DefaultProviderDatabase } from './DefaultProviderDatabase'; import { applyDatabaseMigrations } from './migrations'; import { DbRefreshStateReferencesRow, DbRefreshStateRow } from './tables'; +import { LoggerService } from '@backstage/backend-plugin-api'; jest.setTimeout(60_000); describe('DefaultProviderDatabase', () => { - const defaultLogger = getVoidLogger(); + const defaultLogger = mockServices.logger.mock(); const databases = TestDatabases.create(); async function createDatabase( databaseId: TestDatabaseId, - logger: Logger = defaultLogger, + logger: LoggerService = defaultLogger, ) { const knex = await databases.init(databaseId); await applyDatabaseMigrations(knex); diff --git a/plugins/catalog-backend/src/database/DefaultProviderDatabase.ts b/plugins/catalog-backend/src/database/DefaultProviderDatabase.ts index 2a97d1f2a9..5b016438e3 100644 --- a/plugins/catalog-backend/src/database/DefaultProviderDatabase.ts +++ b/plugins/catalog-backend/src/database/DefaultProviderDatabase.ts @@ -20,7 +20,6 @@ import { DeferredEntity } from '@backstage/plugin-catalog-node'; import { Knex } from 'knex'; import lodash from 'lodash'; import { v4 as uuid } from 'uuid'; -import type { Logger } from 'winston'; import { rethrowError } from './conversion'; import { deleteWithEagerPruningOfChildren } from './operations/provider/deleteWithEagerPruningOfChildren'; import { refreshByRefreshKeys } from './operations/provider/refreshByRefreshKeys'; @@ -35,6 +34,7 @@ import { Transaction, } from './types'; import { generateStableHash } from './util'; +import { LoggerService } from '@backstage/backend-plugin-api'; // The number of items that are sent per batch to the database layer, when // doing .batchInsert calls to knex. This needs to be low enough to not cause @@ -46,7 +46,7 @@ export class DefaultProviderDatabase implements ProviderDatabase { constructor( private readonly options: { database: Knex; - logger: Logger; + logger: LoggerService; }, ) {} diff --git a/plugins/catalog-backend/src/database/operations/refreshState/insertUnprocessedEntity.ts b/plugins/catalog-backend/src/database/operations/refreshState/insertUnprocessedEntity.ts index 8e1c6edc87..d6309c27fc 100644 --- a/plugins/catalog-backend/src/database/operations/refreshState/insertUnprocessedEntity.ts +++ b/plugins/catalog-backend/src/database/operations/refreshState/insertUnprocessedEntity.ts @@ -18,8 +18,8 @@ import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; import { Knex } from 'knex'; import { DbRefreshStateRow } from '../../tables'; import { v4 as uuid } from 'uuid'; -import type { Logger } from 'winston'; import { isDatabaseConflictError } from '@backstage/backend-common'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Attempts to insert a new refresh state row for the given entity, returning @@ -30,7 +30,7 @@ export async function insertUnprocessedEntity(options: { entity: Entity; hash: string; locationKey?: string; - logger: Logger; + logger: LoggerService; }): Promise { const { tx, entity, hash, logger, locationKey } = options; diff --git a/plugins/catalog-backend/src/database/operations/stitcher/performStitching.ts b/plugins/catalog-backend/src/database/operations/stitcher/performStitching.ts index e4388813e8..bf9a1307bd 100644 --- a/plugins/catalog-backend/src/database/operations/stitcher/performStitching.ts +++ b/plugins/catalog-backend/src/database/operations/stitcher/performStitching.ts @@ -24,7 +24,6 @@ import { AlphaEntity, EntityStatusItem } from '@backstage/catalog-model/alpha'; import { SerializedError } from '@backstage/errors'; import { Knex } from 'knex'; import { v4 as uuid } from 'uuid'; -import { Logger } from 'winston'; import { StitchingStrategy } from '../../../stitching/types'; import { DbFinalEntitiesRow, @@ -34,6 +33,7 @@ import { import { buildEntitySearch } from './buildEntitySearch'; import { markDeferredStitchCompleted } from './markDeferredStitchCompleted'; import { BATCH_SIZE, generateStableHash } from './util'; +import { LoggerService } from '@backstage/backend-plugin-api'; // See https://github.com/facebook/react/blob/f0cf832e1d0c8544c36aa8b310960885a11a847c/packages/react-dom-bindings/src/shared/sanitizeURL.js const scriptProtocolPattern = @@ -47,7 +47,7 @@ const scriptProtocolPattern = */ export async function performStitching(options: { knex: Knex | Knex.Transaction; - logger: Logger; + logger: LoggerService; strategy: StitchingStrategy; entityRef: string; stitchTicket?: string; diff --git a/plugins/catalog-backend/src/ingestion/LocationAnalyzer.ts b/plugins/catalog-backend/src/ingestion/LocationAnalyzer.ts index ad752b770d..61d319bf37 100644 --- a/plugins/catalog-backend/src/ingestion/LocationAnalyzer.ts +++ b/plugins/catalog-backend/src/ingestion/LocationAnalyzer.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { Logger } from 'winston'; import parseGitUrl from 'git-url-parse'; import { Entity } from '@backstage/catalog-model'; import { ScmIntegrationRegistry } from '@backstage/integration'; @@ -24,14 +23,15 @@ import { AnalyzeLocationResponse, } from '@backstage/plugin-catalog-common'; import { ScmLocationAnalyzer } from '@backstage/plugin-catalog-node'; +import { LoggerService } from '@backstage/backend-plugin-api'; export class RepoLocationAnalyzer implements LocationAnalyzer { - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly scmIntegrations: ScmIntegrationRegistry; private readonly analyzers: ScmLocationAnalyzer[]; constructor( - logger: Logger, + logger: LoggerService, scmIntegrations: ScmIntegrationRegistry, analyzers: ScmLocationAnalyzer[], ) { diff --git a/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.ts b/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.ts index 186b732271..b4ed33d162 100644 --- a/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.ts +++ b/plugins/catalog-backend/src/modules/codeowners/CodeOwnersProcessor.ts @@ -21,10 +21,10 @@ import { ScmIntegrationRegistry, ScmIntegrations, } from '@backstage/integration'; -import { Logger } from 'winston'; import { LocationSpec } from '@backstage/plugin-catalog-common'; import { CatalogProcessor } from '@backstage/plugin-catalog-node'; import { findCodeOwnerByTarget } from './lib'; +import { LoggerService } from '@backstage/backend-plugin-api'; const ALLOWED_KINDS = ['API', 'Component', 'Domain', 'Resource', 'System']; const ALLOWED_LOCATION_TYPES = ['url']; @@ -32,12 +32,12 @@ const ALLOWED_LOCATION_TYPES = ['url']; /** @public */ export class CodeOwnersProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrationRegistry; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly reader: UrlReader; static fromConfig( config: Config, - options: { logger: Logger; reader: UrlReader }, + options: { logger: LoggerService; reader: UrlReader }, ) { const integrations = ScmIntegrations.fromConfig(config); @@ -49,7 +49,7 @@ export class CodeOwnersProcessor implements CatalogProcessor { constructor(options: { integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; reader: UrlReader; }) { this.integrations = options.integrations; diff --git a/plugins/catalog-backend/src/modules/core/UrlReaderProcessor.ts b/plugins/catalog-backend/src/modules/core/UrlReaderProcessor.ts index 118cf83064..89f9e74685 100644 --- a/plugins/catalog-backend/src/modules/core/UrlReaderProcessor.ts +++ b/plugins/catalog-backend/src/modules/core/UrlReaderProcessor.ts @@ -18,7 +18,6 @@ import { UrlReader } from '@backstage/backend-common'; import { Entity } from '@backstage/catalog-model'; import { assertError } from '@backstage/errors'; import limiterFactory from 'p-limit'; -import { Logger } from 'winston'; import { LocationSpec } from '@backstage/plugin-catalog-common'; import parseGitUrl from 'git-url-parse'; import { @@ -30,6 +29,7 @@ import { CatalogProcessorResult, processingResult, } from '@backstage/plugin-catalog-node'; +import { LoggerService } from '@backstage/backend-plugin-api'; const CACHE_KEY = 'v1'; @@ -48,7 +48,7 @@ export class UrlReaderProcessor implements CatalogProcessor { constructor( private readonly options: { reader: UrlReader; - logger: Logger; + logger: LoggerService; }, ) {} diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts index 81c31cc1c7..46130a5123 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingEngine.ts @@ -23,7 +23,6 @@ import { assertError, serializeError, stringifyError } from '@backstage/errors'; import { Hash } from 'crypto'; import stableStringify from 'fast-json-stable-stringify'; import { Knex } from 'knex'; -import { Logger } from 'winston'; import { metrics, trace } from '@opentelemetry/api'; import { ProcessingDatabase, RefreshStateItem } from '../database/types'; import { createCounterMetric, createSummaryMetric } from '../util/metrics'; @@ -40,6 +39,7 @@ import { import { deleteOrphanedEntities } from '../database/operations/util/deleteOrphanedEntities'; import { EventBroker } from '@backstage/plugin-events-node'; import { CATALOG_ERRORS_TOPIC } from '../constants'; +import { LoggerService } from '@backstage/backend-plugin-api'; const CACHE_TTL = 5; @@ -56,7 +56,7 @@ export type ProgressTracker = ReturnType; export class DefaultCatalogProcessingEngine { private readonly config: Config; private readonly scheduler?: PluginTaskScheduler; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly knex: Knex; private readonly processingDatabase: ProcessingDatabase; private readonly orchestrator: CatalogProcessingOrchestrator; @@ -76,7 +76,7 @@ export class DefaultCatalogProcessingEngine { constructor(options: { config: Config; scheduler?: PluginTaskScheduler; - logger: Logger; + logger: LoggerService; knex: Knex; processingDatabase: ProcessingDatabase; orchestrator: CatalogProcessingOrchestrator; @@ -437,7 +437,7 @@ function progressTracker() { }, ); - function processStart(item: RefreshStateItem, logger: Logger) { + function processStart(item: RefreshStateItem, logger: LoggerService) { const startTime = process.hrtime(); const endOverallTimer = promProcessingDuration.startTimer(); const endProcessorsTimer = promProcessorsDuration.startTimer(); diff --git a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts index c5eaacbc68..5456371e15 100644 --- a/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts +++ b/plugins/catalog-backend/src/processing/DefaultCatalogProcessingOrchestrator.ts @@ -32,7 +32,6 @@ import { import { JsonValue } from '@backstage/types'; import { ScmIntegrationRegistry } from '@backstage/integration'; import path from 'path'; -import { Logger } from 'winston'; import { LocationSpec } from '@backstage/plugin-catalog-common'; import { CatalogProcessor, @@ -49,10 +48,10 @@ import { getEntityLocationRef, getEntityOriginLocationRef, isLocationEntity, + isObject, toAbsoluteUrl, validateEntity, validateEntityEnvelope, - isObject, } from './util'; import { CatalogRulesEnforcer } from '../ingestion/CatalogRules'; import { ProcessorCacheManager } from './ProcessorCacheManager'; @@ -61,6 +60,7 @@ import { TRACER_ID, withActiveSpan, } from '../util/opentelemetry'; +import { LoggerService } from '@backstage/backend-plugin-api'; const tracer = trace.getTracer(TRACER_ID); @@ -92,7 +92,7 @@ export class DefaultCatalogProcessingOrchestrator private readonly options: { processors: CatalogProcessor[]; integrations: ScmIntegrationRegistry; - logger: Logger; + logger: LoggerService; parser: CatalogProcessorParser; policy: EntityPolicy; rulesEnforcer: CatalogRulesEnforcer; diff --git a/plugins/catalog-backend/src/processing/ProcessorOutputCollector.ts b/plugins/catalog-backend/src/processing/ProcessorOutputCollector.ts index 0ee6191284..eb8cbcc81a 100644 --- a/plugins/catalog-backend/src/processing/ProcessorOutputCollector.ts +++ b/plugins/catalog-backend/src/processing/ProcessorOutputCollector.ts @@ -15,14 +15,13 @@ */ import { - Entity, ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, - stringifyLocationRef, + Entity, stringifyEntityRef, + stringifyLocationRef, } from '@backstage/catalog-model'; import { assertError } from '@backstage/errors'; -import { Logger } from 'winston'; import { CatalogProcessor, CatalogProcessorResult, @@ -36,6 +35,7 @@ import { validateEntityEnvelope, } from './util'; import { RefreshKeyData } from './types'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Helper class for aggregating all of the emitted data from processors. @@ -48,7 +48,7 @@ export class ProcessorOutputCollector { private done = false; constructor( - private readonly logger: Logger, + private readonly logger: LoggerService, private readonly parentEntity: Entity, ) {} @@ -75,7 +75,7 @@ export class ProcessorOutputCollector { }; } - private receive(logger: Logger, i: CatalogProcessorResult) { + private receive(logger: LoggerService, i: CatalogProcessorResult) { if (this.done) { logger.warn( `Item of type "${ diff --git a/plugins/catalog-backend/src/service/CatalogBuilder.ts b/plugins/catalog-backend/src/service/CatalogBuilder.ts index 6faee1ebaf..2438dc9009 100644 --- a/plugins/catalog-backend/src/service/CatalogBuilder.ts +++ b/plugins/catalog-backend/src/service/CatalogBuilder.ts @@ -15,10 +15,10 @@ */ import { - PluginDatabaseManager, - HostDiscovery, - UrlReader, createLegacyAuthAdapters, + HostDiscovery, + PluginDatabaseManager, + UrlReader, } from '@backstage/backend-common'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { @@ -65,7 +65,11 @@ import { } from '../modules/core/PlaceholderProcessor'; import { defaultEntityDataParser } from '../modules/util/parse'; import { LocationAnalyzer } from '../ingestion'; -import { CatalogProcessingEngine } from '../processing'; +import { + CatalogProcessingEngine, + createRandomProcessingInterval, + ProcessingIntervalFunction, +} from '../processing'; import { DefaultProcessingDatabase } from '../database/DefaultProcessingDatabase'; import { applyDatabaseMigrations } from '../database/migrations'; import { DefaultCatalogProcessingEngine } from '../processing/DefaultCatalogProcessingEngine'; @@ -73,30 +77,23 @@ import { DefaultLocationService } from './DefaultLocationService'; import { DefaultEntitiesCatalog } from './DefaultEntitiesCatalog'; import { DefaultCatalogProcessingOrchestrator } from '../processing/DefaultCatalogProcessingOrchestrator'; import { DefaultStitcher } from '../stitching/DefaultStitcher'; -import { - createRandomProcessingInterval, - ProcessingIntervalFunction, -} from '../processing'; import { createRouter } from './createRouter'; import { DefaultRefreshService } from './DefaultRefreshService'; import { AuthorizedRefreshService } from './AuthorizedRefreshService'; import { DefaultCatalogRulesEnforcer } from '../ingestion/CatalogRules'; import { Config, readDurationFromConfig } from '@backstage/config'; -import { Logger } from 'winston'; import { connectEntityProviders } from '../processing/connectEntityProviders'; import { Permission, - PermissionRuleParams, -} from '@backstage/plugin-permission-common'; -import { permissionRules as catalogPermissionRules } from '../permissions/rules'; -import { PermissionRule } from '@backstage/plugin-permission-node'; -import { PermissionAuthorizer, + PermissionRuleParams, toPermissionEvaluator, } from '@backstage/plugin-permission-common'; +import { permissionRules as catalogPermissionRules } from '../permissions/rules'; import { createConditionTransformer, createPermissionIntegrationRouter, + PermissionRule, } from '@backstage/plugin-permission-node'; import { AuthorizedEntitiesCatalog } from './AuthorizedEntitiesCatalog'; import { basicEntityFilter } from './request'; @@ -110,9 +107,10 @@ import { DefaultCatalogDatabase } from '../database/DefaultCatalogDatabase'; import { EventBroker } from '@backstage/plugin-events-node'; import { durationToMilliseconds } from '@backstage/types'; import { - DiscoveryService, AuthService, + DiscoveryService, HttpAuthService, + LoggerService, PermissionsService, } from '@backstage/backend-plugin-api'; @@ -127,7 +125,7 @@ export type CatalogPermissionRuleInput< /** @public */ export type CatalogEnvironment = { - logger: Logger; + logger: LoggerService; database: PluginDatabaseManager; config: Config; reader: UrlReader; diff --git a/plugins/catalog-backend/src/service/CatalogPlugin.ts b/plugins/catalog-backend/src/service/CatalogPlugin.ts index 423a9bb9d1..039d9368bf 100644 --- a/plugins/catalog-backend/src/service/CatalogPlugin.ts +++ b/plugins/catalog-backend/src/service/CatalogPlugin.ts @@ -14,20 +14,20 @@ * limitations under the License. */ import { - createBackendPlugin, coreServices, + createBackendPlugin, } from '@backstage/backend-plugin-api'; import { Entity, Validators } from '@backstage/catalog-model'; import { CatalogBuilder, CatalogPermissionRuleInput } from './CatalogBuilder'; import { CatalogAnalysisExtensionPoint, catalogAnalysisExtensionPoint, - CatalogProcessingExtensionPoint, - catalogProcessingExtensionPoint, - CatalogPermissionExtensionPoint, - catalogPermissionExtensionPoint, CatalogModelExtensionPoint, catalogModelExtensionPoint, + CatalogPermissionExtensionPoint, + catalogPermissionExtensionPoint, + CatalogProcessingExtensionPoint, + catalogProcessingExtensionPoint, } from '@backstage/plugin-catalog-node/alpha'; import { CatalogProcessor, @@ -36,7 +36,6 @@ import { PlaceholderResolver, ScmLocationAnalyzer, } from '@backstage/plugin-catalog-node'; -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { merge } from 'lodash'; import { Permission } from '@backstage/plugin-permission-common'; @@ -221,14 +220,13 @@ export const catalogPlugin = createBackendPlugin({ auth, httpAuth, }) { - const winstonLogger = loggerToWinstonLogger(logger); const builder = await CatalogBuilder.create({ config, reader, permissions, database, scheduler, - logger: winstonLogger, + logger, discovery, auth, httpAuth, diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts index 81982d5617..9049685d38 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts @@ -21,23 +21,22 @@ import { } from '@backstage/catalog-model'; import { InputError, NotFoundError } from '@backstage/errors'; import { Knex } from 'knex'; -import { isEqual, chunk as lodashChunk } from 'lodash'; -import { Logger } from 'winston'; +import { chunk as lodashChunk, isEqual } from 'lodash'; import { z } from 'zod'; import { + Cursor, EntitiesBatchRequest, EntitiesBatchResponse, - Cursor, EntitiesCatalog, EntitiesRequest, EntitiesResponse, EntityAncestryResponse, EntityFacetsRequest, EntityFacetsResponse, + EntityOrder, EntityPagination, QueryEntitiesRequest, QueryEntitiesResponse, - EntityOrder, } from '../catalog/types'; import { DbFinalEntitiesRow, @@ -57,6 +56,7 @@ import { EntitiesSearchFilter, EntityFilter, } from '@backstage/plugin-catalog-node'; +import { LoggerService } from '@backstage/backend-plugin-api'; const defaultSortField: EntityOrder = { field: 'metadata.uid', @@ -190,10 +190,14 @@ function parseFilter( export class DefaultEntitiesCatalog implements EntitiesCatalog { private readonly database: Knex; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly stitcher: Stitcher; - constructor(options: { database: Knex; logger: Logger; stitcher: Stitcher }) { + constructor(options: { + database: Knex; + logger: LoggerService; + stitcher: Stitcher; + }) { this.database = options.database; this.logger = options.logger; this.stitcher = options.stitcher; diff --git a/plugins/catalog-backend/src/service/DefaultRefreshService.test.ts b/plugins/catalog-backend/src/service/DefaultRefreshService.test.ts index 9ca9ae0a5f..a89b21f79f 100644 --- a/plugins/catalog-backend/src/service/DefaultRefreshService.test.ts +++ b/plugins/catalog-backend/src/service/DefaultRefreshService.test.ts @@ -14,17 +14,16 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { + mockCredentials, + mockServices, TestDatabaseId, TestDatabases, - mockCredentials, } from '@backstage/backend-test-utils'; import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; import { createHash } from 'crypto'; import { Knex } from 'knex'; import { v4 as uuid } from 'uuid'; -import { Logger } from 'winston'; import { DefaultCatalogDatabase } from '../database/DefaultCatalogDatabase'; import { DefaultProcessingDatabase } from '../database/DefaultProcessingDatabase'; import { applyDatabaseMigrations } from '../database/migrations'; @@ -38,16 +37,17 @@ import { EntityProcessingRequest } from '../processing/types'; import { DefaultRefreshService } from './DefaultRefreshService'; import { ConfigReader } from '@backstage/config'; import { DefaultStitcher } from '../stitching/DefaultStitcher'; +import { LoggerService } from '@backstage/backend-plugin-api'; jest.setTimeout(60_000); describe('DefaultRefreshService', () => { - const defaultLogger = getVoidLogger(); + const defaultLogger = mockServices.logger.mock(); const databases = TestDatabases.create(); async function createDatabase( databaseId: TestDatabaseId, - logger: Logger = defaultLogger, + logger: LoggerService = defaultLogger, ) { const knex = await databases.init(databaseId); await applyDatabaseMigrations(knex); diff --git a/plugins/catalog-backend/src/service/createRouter.ts b/plugins/catalog-backend/src/service/createRouter.ts index 4bfed783a6..508f0bb3d6 100644 --- a/plugins/catalog-backend/src/service/createRouter.ts +++ b/plugins/catalog-backend/src/service/createRouter.ts @@ -25,7 +25,6 @@ import { import { Config } from '@backstage/config'; import { InputError, NotFoundError, serializeError } from '@backstage/errors'; import express from 'express'; -import { Logger } from 'winston'; import yn from 'yn'; import { z } from 'zod'; import { EntitiesCatalog } from '../catalog/types'; @@ -51,7 +50,11 @@ import { import { createOpenApiRouter } from '../schema/openapi.generated'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { parseEntityPaginationParams } from './request/parseEntityPaginationParams'; -import { AuthService, HttpAuthService } from '@backstage/backend-plugin-api'; +import { + AuthService, + HttpAuthService, + LoggerService, +} from '@backstage/backend-plugin-api'; /** * Options used by {@link createRouter}. @@ -65,7 +68,7 @@ export interface RouterOptions { orchestrator?: CatalogProcessingOrchestrator; refreshService?: RefreshService; scheduler?: PluginTaskScheduler; - logger: Logger; + logger: LoggerService; config: Config; permissionIntegrationRouter?: express.Router; auth: AuthService; diff --git a/plugins/catalog-backend/src/service/standaloneServer.ts b/plugins/catalog-backend/src/service/standaloneServer.ts index 995a607ab5..0755ab6301 100644 --- a/plugins/catalog-backend/src/service/standaloneServer.ts +++ b/plugins/catalog-backend/src/service/standaloneServer.ts @@ -17,22 +17,22 @@ import { createServiceBuilder, DatabaseManager, + HostDiscovery, loadBackendConfig, ServerTokenManager, - HostDiscovery, UrlReaders, } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { ServerPermissionClient } from '@backstage/plugin-permission-node'; import { Server } from 'http'; -import { Logger } from 'winston'; import { applyDatabaseMigrations } from '../database/migrations'; import { CatalogBuilder } from './CatalogBuilder'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } // TODO(freben): Migrate to the next catalog when it's in place diff --git a/plugins/catalog-backend/src/stitching/DefaultStitcher.ts b/plugins/catalog-backend/src/stitching/DefaultStitcher.ts index 990c5efd3b..14b3eca0d4 100644 --- a/plugins/catalog-backend/src/stitching/DefaultStitcher.ts +++ b/plugins/catalog-backend/src/stitching/DefaultStitcher.ts @@ -19,7 +19,6 @@ import { durationToMilliseconds, HumanDuration } from '@backstage/types'; import { Knex } from 'knex'; import splitToChunks from 'lodash/chunk'; import { DateTime } from 'luxon'; -import { Logger } from 'winston'; import { getDeferredStitchableEntities } from '../database/operations/stitcher/getDeferredStitchableEntities'; import { markForStitching } from '../database/operations/stitcher/markForStitching'; import { performStitching } from '../database/operations/stitcher/performStitching'; @@ -31,6 +30,7 @@ import { StitchingStrategy, stitchingStrategyFromConfig, } from './types'; +import { LoggerService } from '@backstage/backend-plugin-api'; type DeferredStitchItem = Awaited< ReturnType @@ -45,7 +45,7 @@ type StitchProgressTracker = ReturnType; */ export class DefaultStitcher implements Stitcher { private readonly knex: Knex; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly strategy: StitchingStrategy; private readonly tracker: StitchProgressTracker; private stopFunc?: () => void; @@ -54,7 +54,7 @@ export class DefaultStitcher implements Stitcher { config: Config, options: { knex: Knex; - logger: Logger; + logger: LoggerService; }, ): DefaultStitcher { return new DefaultStitcher({ @@ -66,7 +66,7 @@ export class DefaultStitcher implements Stitcher { constructor(options: { knex: Knex; - logger: Logger; + logger: LoggerService; strategy: StitchingStrategy; }) { this.knex = options.knex; diff --git a/plugins/catalog-backend/src/stitching/progressTracker.ts b/plugins/catalog-backend/src/stitching/progressTracker.ts index f82dbe378e..9e00a1a01b 100644 --- a/plugins/catalog-backend/src/stitching/progressTracker.ts +++ b/plugins/catalog-backend/src/stitching/progressTracker.ts @@ -18,12 +18,12 @@ import { stringifyError } from '@backstage/errors'; import { metrics } from '@opentelemetry/api'; import { Knex } from 'knex'; import { DateTime } from 'luxon'; -import { Logger } from 'winston'; import { DbRefreshStateRow } from '../database/tables'; import { createCounterMetric } from '../util/metrics'; +import { LoggerService } from '@backstage/backend-plugin-api'; // Helps wrap the timing and logging behaviors -export function progressTracker(knex: Knex, logger: Logger) { +export function progressTracker(knex: Knex, logger: LoggerService) { // prom-client metrics are deprecated in favour of OpenTelemetry metrics. const promStitchedEntities = createCounterMetric({ name: 'catalog_stitched_entities_count', diff --git a/plugins/catalog-backend/src/tests/integration.test.ts b/plugins/catalog-backend/src/tests/integration.test.ts index f3101a04e0..6ed2188773 100644 --- a/plugins/catalog-backend/src/tests/integration.test.ts +++ b/plugins/catalog-backend/src/tests/integration.test.ts @@ -34,7 +34,6 @@ import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { JsonObject } from '@backstage/types'; import { createHash } from 'crypto'; import { Knex } from 'knex'; -import { Logger } from 'winston'; import { EntitiesCatalog } from '../catalog/types'; import { DefaultCatalogDatabase } from '../database/DefaultCatalogDatabase'; import { DefaultProcessingDatabase } from '../database/DefaultProcessingDatabase'; @@ -54,8 +53,10 @@ import { DefaultEntitiesCatalog } from '../service/DefaultEntitiesCatalog'; import { DefaultRefreshService } from '../service/DefaultRefreshService'; import { RefreshOptions, RefreshService } from '../service/types'; import { DefaultStitcher } from '../stitching/DefaultStitcher'; +import { mockServices } from '@backstage/backend-test-utils'; +import { LoggerService } from '@backstage/backend-plugin-api'; -const voidLogger = getVoidLogger(); +const voidLogger = mockServices.logger.mock(); type ProgressTrackerWithErrorReports = ProgressTracker & { reportError(unprocessedEntity: Entity, errors: Error[]): void; @@ -198,7 +199,7 @@ class TestHarness { static async create(options?: { config?: JsonObject; - logger?: Logger; + logger?: LoggerService; db?: Knex; permissions?: PermissionEvaluator; processEntity?( diff --git a/plugins/code-coverage-backend/api-report.md b/plugins/code-coverage-backend/api-report.md index fef869a302..3b907a0261 100644 --- a/plugins/code-coverage-backend/api-report.md +++ b/plugins/code-coverage-backend/api-report.md @@ -9,7 +9,7 @@ import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import express from 'express'; import { HttpAuthService } from '@backstage/backend-plugin-api'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginDatabaseManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { UrlReader } from '@backstage/backend-common'; @@ -36,7 +36,7 @@ export interface RouterOptions { // (undocumented) httpAuth?: HttpAuthService; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) urlReader: UrlReader; } diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 172e692cb3..4b9bb3e92c 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -47,7 +47,6 @@ "express-promise-router": "^4.1.0", "knex": "^3.0.0", "uuid": "^9.0.0", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/code-coverage-backend/src/plugin.ts b/plugins/code-coverage-backend/src/plugin.ts index 0ddb6418bc..4e4dfca536 100644 --- a/plugins/code-coverage-backend/src/plugin.ts +++ b/plugins/code-coverage-backend/src/plugin.ts @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -48,7 +47,7 @@ export const codeCoveragePlugin = createBackendPlugin({ httpRouter.use( await createRouter({ config, - logger: loggerToWinstonLogger(logger), + logger, urlReader, discovery, database, diff --git a/plugins/code-coverage-backend/src/service/converter/cobertura.ts b/plugins/code-coverage-backend/src/service/converter/cobertura.ts index 540ea95944..71893abf02 100644 --- a/plugins/code-coverage-backend/src/service/converter/cobertura.ts +++ b/plugins/code-coverage-backend/src/service/converter/cobertura.ts @@ -15,11 +15,11 @@ */ import { BranchHit, FileEntry } from '../types'; import { CoberturaXML, InnerClass, LineHit } from './types'; -import { Logger } from 'winston'; import { Converter } from './Converter'; +import { LoggerService } from '@backstage/backend-plugin-api'; export class Cobertura implements Converter { - constructor(readonly logger: Logger) { + constructor(readonly logger: LoggerService) { this.logger = logger; } diff --git a/plugins/code-coverage-backend/src/service/converter/jacoco.ts b/plugins/code-coverage-backend/src/service/converter/jacoco.ts index d461cfe7d7..cb3307aa12 100644 --- a/plugins/code-coverage-backend/src/service/converter/jacoco.ts +++ b/plugins/code-coverage-backend/src/service/converter/jacoco.ts @@ -16,8 +16,8 @@ import { BranchHit, FileEntry } from '../types'; import { JacocoSourceFile, JacocoXML } from './types'; -import { Logger } from 'winston'; import { Converter } from './Converter'; +import { LoggerService } from '@backstage/backend-plugin-api'; type ParsedLine = { number: number; @@ -28,7 +28,7 @@ type ParsedLine = { }; export class Jacoco implements Converter { - constructor(readonly logger: Logger) { + constructor(readonly logger: LoggerService) { this.logger = logger; } diff --git a/plugins/code-coverage-backend/src/service/converter/lcov.ts b/plugins/code-coverage-backend/src/service/converter/lcov.ts index e2f5733dae..fbcf9fab89 100644 --- a/plugins/code-coverage-backend/src/service/converter/lcov.ts +++ b/plugins/code-coverage-backend/src/service/converter/lcov.ts @@ -14,11 +14,11 @@ * limitations under the License. */ import { FileEntry } from '../types'; -import { Logger } from 'winston'; import { Converter } from './Converter'; +import { LoggerService } from '@backstage/backend-plugin-api'; export class Lcov implements Converter { - constructor(readonly logger: Logger) { + constructor(readonly logger: LoggerService) { this.logger = logger; } diff --git a/plugins/code-coverage-backend/src/service/router.ts b/plugins/code-coverage-backend/src/service/router.ts index d1a0a1703c..cf52c098e0 100644 --- a/plugins/code-coverage-backend/src/service/router.ts +++ b/plugins/code-coverage-backend/src/service/router.ts @@ -16,7 +16,6 @@ import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import BodyParser from 'body-parser'; import bodyParserXml from 'body-parser-xml'; import { CatalogApi, CatalogClient } from '@backstage/catalog-client'; @@ -32,9 +31,13 @@ import { Config } from '@backstage/config'; import { ScmIntegrations } from '@backstage/integration'; import { CodeCoverageDatabase } from './CodeCoverageDatabase'; import { aggregateCoverage, CoverageUtils } from './CoverageUtils'; -import { Converter, Jacoco, Cobertura, Lcov } from './converter'; +import { Cobertura, Converter, Jacoco, Lcov } from './converter'; import { getEntitySourceLocation } from '@backstage/catalog-model'; -import { AuthService, HttpAuthService } from '@backstage/backend-plugin-api'; +import { + AuthService, + HttpAuthService, + LoggerService, +} from '@backstage/backend-plugin-api'; /** * Options for {@link createRouter}. @@ -46,7 +49,7 @@ export interface RouterOptions { discovery: PluginEndpointDiscovery; database: PluginDatabaseManager; urlReader: UrlReader; - logger: Logger; + logger: LoggerService; catalogApi?: CatalogApi; auth?: AuthService; httpAuth?: HttpAuthService; diff --git a/plugins/code-coverage-backend/src/service/standaloneServer.ts b/plugins/code-coverage-backend/src/service/standaloneServer.ts index a2207b86d9..3defbd6d62 100644 --- a/plugins/code-coverage-backend/src/service/standaloneServer.ts +++ b/plugins/code-coverage-backend/src/service/standaloneServer.ts @@ -24,14 +24,14 @@ import { import { CatalogApi } from '@backstage/catalog-client'; import { CompoundEntityRef, parseEntityRef } from '@backstage/catalog-model'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; import { ConfigReader } from '@backstage/config'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/devtools-backend/api-report.md b/plugins/devtools-backend/api-report.md index 9bde25bd54..d0632fd912 100644 --- a/plugins/devtools-backend/api-report.md +++ b/plugins/devtools-backend/api-report.md @@ -11,7 +11,7 @@ import { DiscoveryService } from '@backstage/backend-plugin-api'; import express from 'express'; import { ExternalDependency } from '@backstage/plugin-devtools-common'; import { HttpAuthService } from '@backstage/backend-plugin-api'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PermissionsService } from '@backstage/backend-plugin-api'; // @public (undocumented) @@ -19,7 +19,7 @@ export function createRouter(options: RouterOptions): Promise; // @public (undocumented) export class DevToolsBackendApi { - constructor(logger: Logger, config: Config); + constructor(logger: LoggerService, config: Config); // (undocumented) listConfig(): Promise; // (undocumented) @@ -43,7 +43,7 @@ export interface RouterOptions { // (undocumented) httpAuth?: HttpAuthService; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) permissions: PermissionsService; } diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index 107790bb02..b892623eb9 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -49,7 +49,6 @@ "node-fetch": "^2.6.7", "ping": "^0.4.1", "semver": "^7.5.3", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/devtools-backend/src/api/DevToolsBackendApi.ts b/plugins/devtools-backend/src/api/DevToolsBackendApi.ts index b71edb3391..ae687f3cb0 100644 --- a/plugins/devtools-backend/src/api/DevToolsBackendApi.ts +++ b/plugins/devtools-backend/src/api/DevToolsBackendApi.ts @@ -26,7 +26,6 @@ import { } from '@backstage/plugin-devtools-common'; import { JsonObject } from '@backstage/types'; -import { Logger } from 'winston'; import fetch from 'node-fetch'; import { findPaths } from '@backstage/cli-common'; import { getPackages } from '@manypkg/get-packages'; @@ -36,11 +35,12 @@ import fs from 'fs-extra'; import { Lockfile } from '../util/Lockfile'; import { memoize } from 'lodash'; import { assertError } from '@backstage/errors'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** @public */ export class DevToolsBackendApi { public constructor( - private readonly logger: Logger, + private readonly logger: LoggerService, private readonly config: Config, ) {} diff --git a/plugins/devtools-backend/src/plugin.ts b/plugins/devtools-backend/src/plugin.ts index fb0bb8b048..ee7bf369f5 100644 --- a/plugins/devtools-backend/src/plugin.ts +++ b/plugins/devtools-backend/src/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -49,7 +48,7 @@ export const devtoolsPlugin = createBackendPlugin({ httpRouter.use( await createRouter({ config, - logger: loggerToWinstonLogger(logger), + logger, permissions, discovery, httpAuth, diff --git a/plugins/devtools-backend/src/service/router.ts b/plugins/devtools-backend/src/service/router.ts index 4c964dfbc5..cec3d87a5a 100644 --- a/plugins/devtools-backend/src/service/router.ts +++ b/plugins/devtools-backend/src/service/router.ts @@ -23,7 +23,6 @@ import { import { Config } from '@backstage/config'; import { DevToolsBackendApi } from '../api'; -import { Logger } from 'winston'; import { NotAllowedError } from '@backstage/errors'; import Router from 'express-promise-router'; import { @@ -35,13 +34,14 @@ import { createPermissionIntegrationRouter } from '@backstage/plugin-permission- import { DiscoveryService, HttpAuthService, + LoggerService, PermissionsService, } from '@backstage/backend-plugin-api'; /** @public */ export interface RouterOptions { devToolsBackendApi?: DevToolsBackendApi; - logger: Logger; + logger: LoggerService; config: Config; permissions: PermissionsService; discovery: DiscoveryService; diff --git a/plugins/devtools-backend/src/service/standaloneServer.ts b/plugins/devtools-backend/src/service/standaloneServer.ts index 75404e98b2..136db7bf89 100644 --- a/plugins/devtools-backend/src/service/standaloneServer.ts +++ b/plugins/devtools-backend/src/service/standaloneServer.ts @@ -15,21 +15,21 @@ */ import { - ServerTokenManager, - HostDiscovery, createServiceBuilder, + HostDiscovery, loadBackendConfig, + ServerTokenManager, } from '@backstage/backend-common'; -import { Logger } from 'winston'; import { Server } from 'http'; import { ServerPermissionClient } from '@backstage/plugin-permission-node'; import { createRouter } from './router'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/entity-feedback-backend/api-report.md b/plugins/entity-feedback-backend/api-report.md index 573d56efb5..e38f38d64a 100644 --- a/plugins/entity-feedback-backend/api-report.md +++ b/plugins/entity-feedback-backend/api-report.md @@ -8,7 +8,7 @@ import { BackendFeature } from '@backstage/backend-plugin-api'; import express from 'express'; import { HttpAuthService } from '@backstage/backend-plugin-api'; import { IdentityApi } from '@backstage/plugin-auth-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginDatabaseManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; @@ -32,6 +32,6 @@ export interface RouterOptions { // (undocumented) identity: IdentityApi; // (undocumented) - logger: Logger; + logger: LoggerService; } ``` diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json index a96ec51403..6a034de40b 100644 --- a/plugins/entity-feedback-backend/package.json +++ b/plugins/entity-feedback-backend/package.json @@ -45,7 +45,6 @@ "express-promise-router": "^4.1.0", "knex": "^3.0.0", "node-fetch": "^2.6.7", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/entity-feedback-backend/src/plugin.ts b/plugins/entity-feedback-backend/src/plugin.ts index a3111a2308..bf404b55ff 100644 --- a/plugins/entity-feedback-backend/src/plugin.ts +++ b/plugins/entity-feedback-backend/src/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -53,7 +52,7 @@ export const entityFeedbackPlugin = createBackendPlugin({ database, discovery, identity, - logger: loggerToWinstonLogger(logger), + logger, auth, httpAuth, }), diff --git a/plugins/entity-feedback-backend/src/service/router.ts b/plugins/entity-feedback-backend/src/service/router.ts index 8d8cb0d600..bad5633288 100644 --- a/plugins/entity-feedback-backend/src/service/router.ts +++ b/plugins/entity-feedback-backend/src/service/router.ts @@ -20,7 +20,11 @@ import { PluginDatabaseManager, PluginEndpointDiscovery, } from '@backstage/backend-common'; -import { AuthService, HttpAuthService } from '@backstage/backend-plugin-api'; +import { + AuthService, + HttpAuthService, + LoggerService, +} from '@backstage/backend-plugin-api'; import { CatalogClient } from '@backstage/catalog-client'; import { Entity, stringifyEntityRef } from '@backstage/catalog-model'; import { IdentityApi } from '@backstage/plugin-auth-node'; @@ -31,7 +35,6 @@ import { import { InputError } from '@backstage/errors'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { DatabaseHandler } from './DatabaseHandler'; @@ -42,7 +45,7 @@ export interface RouterOptions { database: PluginDatabaseManager; discovery: PluginEndpointDiscovery; identity: IdentityApi; - logger: Logger; + logger: LoggerService; auth?: AuthService; httpAuth?: HttpAuthService; } diff --git a/plugins/entity-feedback-backend/src/service/standaloneServer.ts b/plugins/entity-feedback-backend/src/service/standaloneServer.ts index 27c48ebb1e..0ddc28e00d 100644 --- a/plugins/entity-feedback-backend/src/service/standaloneServer.ts +++ b/plugins/entity-feedback-backend/src/service/standaloneServer.ts @@ -17,19 +17,19 @@ import { createServiceBuilder, DatabaseManager, - loadBackendConfig, HostDiscovery, + loadBackendConfig, } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { DefaultIdentityClient } from '@backstage/plugin-auth-node'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/example-todo-list-backend/api-report.md b/plugins/example-todo-list-backend/api-report.md index 4c27733124..51733d1a43 100644 --- a/plugins/example-todo-list-backend/api-report.md +++ b/plugins/example-todo-list-backend/api-report.md @@ -6,7 +6,7 @@ import { BackendFeature } from '@backstage/backend-plugin-api'; import express from 'express'; import { IdentityApi } from '@backstage/plugin-auth-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; // @public export function createRouter(options: RouterOptions): Promise; @@ -20,7 +20,7 @@ export interface RouterOptions { // (undocumented) identity: IdentityApi; // (undocumented) - logger: Logger; + logger: LoggerService; } // (No @packageDocumentation comment for this package) diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 673962eea8..762ccd8317 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -41,7 +41,6 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "uuid": "^9.0.0", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/example-todo-list-backend/src/plugin.ts b/plugins/example-todo-list-backend/src/plugin.ts index 1838a8a165..ccff192d4c 100644 --- a/plugins/example-todo-list-backend/src/plugin.ts +++ b/plugins/example-todo-list-backend/src/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -39,7 +38,7 @@ export const exampleTodoListPlugin = createBackendPlugin({ httpRouter.use( await createRouter({ identity, - logger: loggerToWinstonLogger(logger), + logger, }), ); httpRouter.addAuthPolicy({ diff --git a/plugins/example-todo-list-backend/src/service/router.ts b/plugins/example-todo-list-backend/src/service/router.ts index a1ae98eac9..09b8669507 100644 --- a/plugins/example-todo-list-backend/src/service/router.ts +++ b/plugins/example-todo-list-backend/src/service/router.ts @@ -17,10 +17,10 @@ import { errorHandler } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { add, getAll, update } from './todos'; import { InputError } from '@backstage/errors'; import { IdentityApi } from '@backstage/plugin-auth-node'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Dependencies of the todo-list router @@ -28,7 +28,7 @@ import { IdentityApi } from '@backstage/plugin-auth-node'; * @public */ export interface RouterOptions { - logger: Logger; + logger: LoggerService; identity: IdentityApi; } diff --git a/plugins/example-todo-list-backend/src/service/standaloneServer.ts b/plugins/example-todo-list-backend/src/service/standaloneServer.ts index 77c78365d6..7ed0c064b7 100644 --- a/plugins/example-todo-list-backend/src/service/standaloneServer.ts +++ b/plugins/example-todo-list-backend/src/service/standaloneServer.ts @@ -16,18 +16,18 @@ import { createServiceBuilder, - loadBackendConfig, HostDiscovery, + loadBackendConfig, } from '@backstage/backend-common'; import { DefaultIdentityClient } from '@backstage/plugin-auth-node'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/explore-backend/api-report.md b/plugins/explore-backend/api-report.md index 05a057fa7b..cca2d0b7cf 100644 --- a/plugins/explore-backend/api-report.md +++ b/plugins/explore-backend/api-report.md @@ -9,7 +9,7 @@ import { ExploreTool } from '@backstage/plugin-explore-common'; import express from 'express'; import { GetExploreToolsRequest } from '@backstage/plugin-explore-common'; import { GetExploreToolsResponse } from '@backstage/plugin-explore-common'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import type { ToolDocument as ToolDocument_2 } from '@backstage/plugin-search-backend-module-explore'; import { ToolDocumentCollatorFactory as ToolDocumentCollatorFactory_2 } from '@backstage/plugin-search-backend-module-explore'; import type { ToolDocumentCollatorFactoryOptions as ToolDocumentCollatorFactoryOptions_2 } from '@backstage/plugin-search-backend-module-explore'; @@ -29,7 +29,7 @@ export interface ExploreToolProvider { // @public (undocumented) export interface RouterOptions { // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) toolProvider: ExploreToolProvider; } diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json index ce9bf0f6b1..e3a45d6d9d 100644 --- a/plugins/explore-backend/package.json +++ b/plugins/explore-backend/package.json @@ -43,7 +43,6 @@ "express-promise-router": "^4.1.0", "lodash": "^4.17.21", "node-fetch": "^2.6.7", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/explore-backend/src/plugin.ts b/plugins/explore-backend/src/plugin.ts index d81493c85a..4c6411d7ca 100644 --- a/plugins/explore-backend/src/plugin.ts +++ b/plugins/explore-backend/src/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -39,7 +38,7 @@ export const explorePlugin = createBackendPlugin({ async init({ config, httpRouter, logger }) { httpRouter.use( await createRouter({ - logger: loggerToWinstonLogger(logger), + logger, toolProvider: StaticExploreToolProvider.fromConfig(config), }), ); diff --git a/plugins/explore-backend/src/service/router.test.ts b/plugins/explore-backend/src/service/router.test.ts index 5fe5b6c6a3..ad7b57e18c 100644 --- a/plugins/explore-backend/src/service/router.test.ts +++ b/plugins/explore-backend/src/service/router.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { getVoidLogger } from '@backstage/backend-common'; import { ExploreTool, GetExploreToolsRequest, @@ -23,6 +22,7 @@ import express from 'express'; import request from 'supertest'; import { ExploreToolProvider } from '../tools'; import { createRouter } from './router'; +import { mockServices } from '@backstage/backend-test-utils'; const mockTools: ExploreTool[] = [ { title: 'Tool 1', url: 'https://example.com/tool1', image: '' }, @@ -42,7 +42,7 @@ describe('createRouter', () => { beforeAll(async () => { const router = await createRouter({ - logger: getVoidLogger(), + logger: mockServices.logger.mock(), toolProvider, }); app = express().use(router); diff --git a/plugins/explore-backend/src/service/router.ts b/plugins/explore-backend/src/service/router.ts index 393736529a..2a11515c33 100644 --- a/plugins/explore-backend/src/service/router.ts +++ b/plugins/explore-backend/src/service/router.ts @@ -18,14 +18,14 @@ import { errorHandler } from '@backstage/backend-common'; import { GetExploreToolsRequest } from '@backstage/plugin-explore-common'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { ExploreToolProvider } from '../tools'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * @public */ export interface RouterOptions { - logger: Logger; + logger: LoggerService; toolProvider: ExploreToolProvider; } diff --git a/plugins/explore-backend/src/service/standaloneServer.ts b/plugins/explore-backend/src/service/standaloneServer.ts index 6cf5852f18..53ee02b8ae 100644 --- a/plugins/explore-backend/src/service/standaloneServer.ts +++ b/plugins/explore-backend/src/service/standaloneServer.ts @@ -17,13 +17,13 @@ import { createServiceBuilder } from '@backstage/backend-common'; import { GetExploreToolsRequest } from '@backstage/plugin-explore-common'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/jenkins-backend/api-report.md b/plugins/jenkins-backend/api-report.md index 2024c5206d..e661f9112e 100644 --- a/plugins/jenkins-backend/api-report.md +++ b/plugins/jenkins-backend/api-report.md @@ -12,7 +12,7 @@ import { Config } from '@backstage/config'; import { DiscoveryService } from '@backstage/backend-plugin-api'; import express from 'express'; import { HttpAuthService } from '@backstage/backend-plugin-api'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; @@ -102,7 +102,7 @@ export interface RouterOptions { // (undocumented) jenkinsInfoProvider: JenkinsInfoProvider; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) permissions?: PermissionEvaluator | PermissionAuthorizer; } diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index 6485b6e4f3..58e7833598 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -48,7 +48,6 @@ "express-promise-router": "^4.1.0", "jenkins": "^1.0.0", "node-fetch": "^2.6.7", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/jenkins-backend/src/plugin.ts b/plugins/jenkins-backend/src/plugin.ts index aa0622ab5f..c652d3ccbd 100644 --- a/plugins/jenkins-backend/src/plugin.ts +++ b/plugins/jenkins-backend/src/plugin.ts @@ -14,10 +14,9 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { - createBackendPlugin, coreServices, + createBackendPlugin, } from '@backstage/backend-plugin-api'; import { DefaultJenkinsInfoProvider } from './service/jenkinsInfoProvider'; import { createRouter } from './service/router'; @@ -52,7 +51,6 @@ export const jenkinsPlugin = createBackendPlugin({ auth, httpAuth, }) { - const winstonLogger = loggerToWinstonLogger(logger); const jenkinsInfoProvider = DefaultJenkinsInfoProvider.fromConfig({ auth, httpAuth, @@ -66,7 +64,7 @@ export const jenkinsPlugin = createBackendPlugin({ /** * Logger for logging purposes */ - logger: winstonLogger, + logger, /** * Info provider to be able to get all necessary information for the APIs */ diff --git a/plugins/jenkins-backend/src/service/router.ts b/plugins/jenkins-backend/src/service/router.ts index bda9686efb..d49b844ab7 100644 --- a/plugins/jenkins-backend/src/service/router.ts +++ b/plugins/jenkins-backend/src/service/router.ts @@ -20,7 +20,6 @@ import { } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { JenkinsInfoProvider } from './jenkinsInfoProvider'; import { JenkinsApiImpl } from './jenkinsApi'; import { @@ -36,11 +35,12 @@ import { AuthService, DiscoveryService, HttpAuthService, + LoggerService, } from '@backstage/backend-plugin-api'; /** @public */ export interface RouterOptions { - logger: Logger; + logger: LoggerService; jenkinsInfoProvider: JenkinsInfoProvider; permissions?: PermissionEvaluator | PermissionAuthorizer; discovery: DiscoveryService; diff --git a/plugins/jenkins-backend/src/service/standaloneServer.ts b/plugins/jenkins-backend/src/service/standaloneServer.ts index ab77bb6573..6bb1e4735e 100644 --- a/plugins/jenkins-backend/src/service/standaloneServer.ts +++ b/plugins/jenkins-backend/src/service/standaloneServer.ts @@ -14,18 +14,18 @@ * limitations under the License. */ -import { HostDiscovery, createServiceBuilder } from '@backstage/backend-common'; +import { createServiceBuilder, HostDiscovery } from '@backstage/backend-common'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; import { CompoundEntityRef } from '@backstage/catalog-model'; import { JenkinsInfo } from './jenkinsInfoProvider'; import { Config } from '@backstage/config'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; config: Config; } diff --git a/plugins/kafka-backend/api-report.md b/plugins/kafka-backend/api-report.md index 20c8260b52..2d820cdabc 100644 --- a/plugins/kafka-backend/api-report.md +++ b/plugins/kafka-backend/api-report.md @@ -5,7 +5,7 @@ ```ts import { Config } from '@backstage/config'; import express from 'express'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; @@ -15,6 +15,6 @@ export interface RouterOptions { // (undocumented) config: Config; // (undocumented) - logger: Logger; + logger: LoggerService; } ``` diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index f6eca5a55e..9e5c836d95 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -59,8 +59,7 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "kafkajs": "^2.0.0", - "lodash": "^4.17.21", - "winston": "^3.2.1" + "lodash": "^4.17.21" }, "devDependencies": { "@backstage/cli": "workspace:^", diff --git a/plugins/kafka-backend/src/alpha.ts b/plugins/kafka-backend/src/alpha.ts index bc627eb9d3..54d7935071 100644 --- a/plugins/kafka-backend/src/alpha.ts +++ b/plugins/kafka-backend/src/alpha.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -36,9 +35,7 @@ export default createBackendPlugin({ httpRouter: coreServices.httpRouter, }, async init({ config, logger, httpRouter }) { - httpRouter.use( - await createRouter({ config, logger: loggerToWinstonLogger(logger) }), - ); + httpRouter.use(await createRouter({ config, logger })); }, }); }, diff --git a/plugins/kafka-backend/src/service/KafkaApi.ts b/plugins/kafka-backend/src/service/KafkaApi.ts index 28595dd418..c3fbf83886 100644 --- a/plugins/kafka-backend/src/service/KafkaApi.ts +++ b/plugins/kafka-backend/src/service/KafkaApi.ts @@ -15,8 +15,8 @@ */ import { Kafka, SeekEntry } from 'kafkajs'; -import { Logger } from 'winston'; import { SaslConfig, SslConfig } from '../types/types'; +import { LoggerService } from '@backstage/backend-plugin-api'; export type PartitionOffset = { id: number; @@ -33,7 +33,7 @@ export type Options = { brokers: string[]; ssl?: SslConfig; sasl?: SaslConfig; - logger: Logger; + logger: LoggerService; }; export interface KafkaApi { @@ -43,7 +43,7 @@ export interface KafkaApi { export class KafkaJsApiImpl implements KafkaApi { private readonly kafka: Kafka; - private readonly logger: Logger; + private readonly logger: LoggerService; constructor(options: Options) { options.logger.debug( diff --git a/plugins/kafka-backend/src/service/router.ts b/plugins/kafka-backend/src/service/router.ts index 1271e8f48c..4e729198f2 100644 --- a/plugins/kafka-backend/src/service/router.ts +++ b/plugins/kafka-backend/src/service/router.ts @@ -16,16 +16,16 @@ import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { Config } from '@backstage/config'; import { NotFoundError } from '@backstage/errors'; import { KafkaApi, KafkaJsApiImpl } from './KafkaApi'; import _ from 'lodash'; import { getClusterDetails } from '../config/ClusterReader'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** @public */ export interface RouterOptions { - logger: Logger; + logger: LoggerService; config: Config; } @@ -35,7 +35,7 @@ export interface ClusterApi { } export const makeRouter = ( - logger: Logger, + logger: LoggerService, kafkaApis: ClusterApi[], ): express.Router => { const router = Router(); diff --git a/plugins/kubernetes-backend/api-report.md b/plugins/kubernetes-backend/api-report.md index cdb12a70b1..c31af334d7 100644 --- a/plugins/kubernetes-backend/api-report.md +++ b/plugins/kubernetes-backend/api-report.md @@ -24,6 +24,7 @@ import { KubernetesRequestAuth } from '@backstage/plugin-kubernetes-common'; import type { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common'; import { KubernetesServiceLocator as KubernetesServiceLocator_2 } from '@backstage/plugin-kubernetes-node'; import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { ObjectToFetch as ObjectToFetch_2 } from '@backstage/plugin-kubernetes-node'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { PermissionsService } from '@backstage/backend-plugin-api'; @@ -75,7 +76,7 @@ export class AwsIamStrategy implements AuthenticationStrategy_2 { // @public (undocumented) export class AzureIdentityStrategy implements AuthenticationStrategy_2 { - constructor(logger: Logger, tokenCredential?: TokenCredential); + constructor(logger: LoggerService, tokenCredential?: TokenCredential); // (undocumented) getCredential(): Promise; // (undocumented) @@ -189,7 +190,7 @@ export class KubernetesBuilder { ): KubernetesObjectsProvider_2; // (undocumented) protected buildProxy( - logger: Logger, + logger: LoggerService, clusterSupplier: KubernetesClustersSupplier_2, discovery: DiscoveryService, httpAuth: HttpAuthService, @@ -240,7 +241,7 @@ export class KubernetesBuilder { protected getObjectTypesToFetch(): ObjectToFetch_2[] | undefined; // (undocumented) protected getProxy( - logger: Logger, + logger: LoggerService, clusterSupplier: KubernetesClustersSupplier_2, discovery: DiscoveryService, httpAuth: HttpAuthService, @@ -301,7 +302,7 @@ export interface KubernetesEnvironment { // (undocumented) httpAuth?: HttpAuthService; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) permissions: PermissionEvaluator; } @@ -321,7 +322,7 @@ export interface KubernetesObjectsProviderOptions { // (undocumented) fetcher: k8sAuthTypes.KubernetesFetcher; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) objectTypesToFetch?: k8sAuthTypes.ObjectToFetch[]; // (undocumented) @@ -347,7 +348,7 @@ export type KubernetesProxyCreateRequestHandlerOptions = { // @public export type KubernetesProxyOptions = { - logger: Logger; + logger: LoggerService; clusterSupplier: KubernetesClustersSupplier; authStrategy: AuthenticationStrategy; discovery: DiscoveryService; diff --git a/plugins/kubernetes-backend/src/auth/AzureIdentityStrategy.ts b/plugins/kubernetes-backend/src/auth/AzureIdentityStrategy.ts index a1b29a10a1..1c6b4b81ea 100644 --- a/plugins/kubernetes-backend/src/auth/AzureIdentityStrategy.ts +++ b/plugins/kubernetes-backend/src/auth/AzureIdentityStrategy.ts @@ -14,17 +14,17 @@ * limitations under the License. */ -import { Logger } from 'winston'; import { AccessToken, DefaultAzureCredential, TokenCredential, } from '@azure/identity'; import { - AuthMetadata, AuthenticationStrategy, + AuthMetadata, KubernetesCredential, } from '@backstage/plugin-kubernetes-node'; +import { LoggerService } from '@backstage/backend-plugin-api'; const aksScope = '6dae42f8-4368-4678-94ff-3960e28e3630/.default'; // This scope is the same for all Azure Managed Kubernetes @@ -37,7 +37,7 @@ export class AzureIdentityStrategy implements AuthenticationStrategy { private newTokenPromise: Promise | undefined; constructor( - private readonly logger: Logger, + private readonly logger: LoggerService, private readonly tokenCredential: TokenCredential = new DefaultAzureCredential(), ) {} diff --git a/plugins/kubernetes-backend/src/cluster-locator/index.ts b/plugins/kubernetes-backend/src/cluster-locator/index.ts index cab1d1df1f..7b8310b965 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/index.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/index.ts @@ -17,7 +17,6 @@ import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { Duration } from 'luxon'; -import { Logger } from 'winston'; import { ClusterDetails, KubernetesClustersSupplier } from '../types/types'; import { AuthenticationStrategy } from '../auth/types'; import { ConfigClusterLocator } from './ConfigClusterLocator'; @@ -27,12 +26,13 @@ import { LocalKubectlProxyClusterLocator } from './LocalKubectlProxyLocator'; import { AuthService, BackstageCredentials, + LoggerService, } from '@backstage/backend-plugin-api'; class CombinedClustersSupplier implements KubernetesClustersSupplier { constructor( readonly clusterSuppliers: KubernetesClustersSupplier[], - readonly logger: Logger, + readonly logger: LoggerService, ) {} async getClusters(options: { @@ -71,7 +71,7 @@ export const getCombinedClusterSupplier = ( rootConfig: Config, catalogClient: CatalogApi, authStrategy: AuthenticationStrategy, - logger: Logger, + logger: LoggerService, refreshInterval: Duration | undefined = undefined, auth: AuthService, ): KubernetesClustersSupplier => { diff --git a/plugins/kubernetes-backend/src/plugin.ts b/plugins/kubernetes-backend/src/plugin.ts index d3aacd5190..57221e377c 100644 --- a/plugins/kubernetes-backend/src/plugin.ts +++ b/plugins/kubernetes-backend/src/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -24,20 +23,20 @@ import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha'; import { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend'; import { - kubernetesAuthStrategyExtensionPoint, - kubernetesClusterSupplierExtensionPoint, - kubernetesFetcherExtensionPoint, - kubernetesObjectsProviderExtensionPoint, - kubernetesServiceLocatorExtensionPoint, type AuthenticationStrategy, + kubernetesAuthStrategyExtensionPoint, type KubernetesAuthStrategyExtensionPoint, - type KubernetesClusterSupplierExtensionPoint, type KubernetesClustersSupplier, + kubernetesClusterSupplierExtensionPoint, + type KubernetesClusterSupplierExtensionPoint, type KubernetesFetcher, + kubernetesFetcherExtensionPoint, type KubernetesFetcherExtensionPoint, type KubernetesObjectsProvider, + kubernetesObjectsProviderExtensionPoint, type KubernetesObjectsProviderExtensionPoint, type KubernetesServiceLocator, + kubernetesServiceLocatorExtensionPoint, type KubernetesServiceLocatorExtensionPoint, } from '@backstage/plugin-kubernetes-node'; @@ -194,10 +193,9 @@ export const kubernetesPlugin = createBackendPlugin({ auth, httpAuth, }) { - const winstonLogger = loggerToWinstonLogger(logger); // TODO: expose all of the customization & extension points of the builder here const builder: KubernetesBuilder = KubernetesBuilder.createBuilder({ - logger: winstonLogger, + logger, config, catalogApi, permissions, diff --git a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts index c065b0124f..8f006cdc86 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesBuilder.ts @@ -25,7 +25,6 @@ import { createPermissionIntegrationRouter } from '@backstage/plugin-permission- import express from 'express'; import Router from 'express-promise-router'; import { Duration } from 'luxon'; -import { Logger } from 'winston'; import { AksStrategy, @@ -46,15 +45,16 @@ import { BackstageCredentials, DiscoveryService, HttpAuthService, + LoggerService, } from '@backstage/backend-plugin-api'; import { - AuthMetadata, AuthenticationStrategy, + AuthMetadata, CustomResource, KubernetesClustersSupplier, KubernetesFetcher, - KubernetesObjectTypes, KubernetesObjectsProvider, + KubernetesObjectTypes, KubernetesServiceLocator, } from '@backstage/plugin-kubernetes-node'; import { addResourceRoutesToRouter } from '../routes/resourcesRoutes'; @@ -78,7 +78,7 @@ import { KubernetesProxy } from './KubernetesProxy'; * @public */ export interface KubernetesEnvironment { - logger: Logger; + logger: LoggerService; config: Config; catalogApi: CatalogApi; discovery: DiscoveryService; @@ -353,7 +353,7 @@ export class KubernetesBuilder { } protected buildProxy( - logger: Logger, + logger: LoggerService, clusterSupplier: KubernetesClustersSupplier, discovery: DiscoveryService, httpAuth: HttpAuthService, @@ -540,7 +540,7 @@ export class KubernetesBuilder { } protected getProxy( - logger: Logger, + logger: LoggerService, clusterSupplier: KubernetesClustersSupplier, discovery: DiscoveryService, httpAuth: HttpAuthService, diff --git a/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts b/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts index b7a5dabf1d..53b5070e61 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesFanOutHandler.ts @@ -15,26 +15,25 @@ */ import { Entity } from '@backstage/catalog-model'; -import { Logger } from 'winston'; import { + CustomResource, + FetchResponseWrapper, KubernetesFetcher, KubernetesObjectsProviderOptions, KubernetesServiceLocator, ObjectsByEntityRequest, - FetchResponseWrapper, ObjectToFetch, - CustomResource, } from '../types/types'; import { ClientContainerStatus, ClientCurrentResourceUsage, ClientPodStatus, ClusterObjects, + CustomResourceMatcher, FetchResponse, + KubernetesRequestAuth, ObjectsByEntityResponse, PodFetchResponse, - KubernetesRequestAuth, - CustomResourceMatcher, PodStatusFetchResponse, } from '@backstage/plugin-kubernetes-common'; import { @@ -50,7 +49,10 @@ import { KubernetesObjectsByEntity, KubernetesObjectsProvider, } from '@backstage/plugin-kubernetes-node'; -import { BackstageCredentials } from '@backstage/backend-plugin-api'; +import { + BackstageCredentials, + LoggerService, +} from '@backstage/backend-plugin-api'; /** * @@ -193,7 +195,7 @@ const toClientSafePodMetrics = ( type responseWithMetrics = [FetchResponseWrapper, PodStatusFetchResponse[]]; export class KubernetesFanOutHandler implements KubernetesObjectsProvider { - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly fetcher: KubernetesFetcher; private readonly serviceLocator: KubernetesServiceLocator; private readonly customResources: CustomResource[]; diff --git a/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts b/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts index b7354d54d4..e5f25652e6 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesFetcher.ts @@ -15,16 +15,15 @@ */ import { - Config, + bufferFromFileOrString, Cluster, + Config, CoreV1Api, KubeConfig, Metrics, - bufferFromFileOrString, topPods, } from '@kubernetes/client-node'; import lodash, { Dictionary } from 'lodash'; -import { Logger } from 'winston'; import { FetchResponseWrapper, KubernetesFetcher, @@ -33,8 +32,8 @@ import { import { ANNOTATION_KUBERNETES_AUTH_PROVIDER, FetchResponse, - KubernetesFetchError, KubernetesErrorTypes, + KubernetesFetchError, PodStatusFetchResponse, } from '@backstage/plugin-kubernetes-common'; import fetch, { RequestInit, Response } from 'node-fetch'; @@ -45,9 +44,10 @@ import { ClusterDetails, KubernetesCredential, } from '@backstage/plugin-kubernetes-node'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface KubernetesClientBasedFetcherOptions { - logger: Logger; + logger: LoggerService; } type FetchResult = FetchResponse | KubernetesFetchError; @@ -84,7 +84,7 @@ const statusCodeToErrorType = (statusCode: number): KubernetesErrorTypes => { }; export class KubernetesClientBasedFetcher implements KubernetesFetcher { - private readonly logger: Logger; + private readonly logger: LoggerService; constructor({ logger }: KubernetesClientBasedFetcherOptions) { this.logger = logger; diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts index 0d6370ddc5..a1ab68d589 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts @@ -22,19 +22,18 @@ import { } from '@backstage/errors'; import { ANNOTATION_KUBERNETES_AUTH_PROVIDER, - KubernetesRequestAuth, kubernetesProxyPermission, + KubernetesRequestAuth, } from '@backstage/plugin-kubernetes-common'; import { AuthorizeResult } from '@backstage/plugin-permission-common'; import { - Cluster, - KubeConfig, bufferFromFileOrString, + Cluster, + Config, + KubeConfig, } from '@kubernetes/client-node'; import { createProxyMiddleware, RequestHandler } from 'http-proxy-middleware'; -import { Logger } from 'winston'; import fs from 'fs-extra'; -import { Config } from '@kubernetes/client-node'; import { AuthenticationStrategy } from '../auth'; import { ClusterDetails, KubernetesClustersSupplier } from '../types/types'; @@ -44,9 +43,13 @@ import { IncomingHttpHeaders } from 'http'; import { DiscoveryService, HttpAuthService, + LoggerService, PermissionsService, } from '@backstage/backend-plugin-api'; -import { createLegacyAuthAdapters } from '@backstage/backend-common'; +import { + createLegacyAuthAdapters, + loggerToWinstonLogger, +} from '@backstage/backend-common'; export const APPLICATION_JSON: string = 'application/json'; @@ -80,7 +83,7 @@ export type KubernetesProxyCreateRequestHandlerOptions = { * @public */ export type KubernetesProxyOptions = { - logger: Logger; + logger: LoggerService; clusterSupplier: KubernetesClustersSupplier; authStrategy: AuthenticationStrategy; discovery: DiscoveryService; @@ -94,7 +97,7 @@ export type KubernetesProxyOptions = { */ export class KubernetesProxy { private readonly middlewareForClusterName = new Map(); - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly clusterSupplier: KubernetesClustersSupplier; private readonly authStrategy: AuthenticationStrategy; private readonly httpAuth: HttpAuthService; @@ -154,7 +157,8 @@ export class KubernetesProxy { if (!middleware) { const logger = this.logger.child({ cluster: originalCluster.name }); middleware = createProxyMiddleware({ - logProvider: () => logger, + // TODO: Add 'log' to LoggerService + logProvider: () => loggerToWinstonLogger(logger), ws: true, secure: !originalCluster.skipTLSVerify, changeOrigin: true, @@ -212,7 +216,7 @@ export class KubernetesProxy { error, ); - logger.error(wrappedError); + logger.error('Kubernetes proxy error', wrappedError); const body: ErrorResponseBody = { error: serializeError(wrappedError, { diff --git a/plugins/kubernetes-backend/src/types/types.ts b/plugins/kubernetes-backend/src/types/types.ts index c34fad6d39..a6eae1f279 100644 --- a/plugins/kubernetes-backend/src/types/types.ts +++ b/plugins/kubernetes-backend/src/types/types.ts @@ -17,7 +17,7 @@ import { Config } from '@backstage/config'; import type { KubernetesRequestBody } from '@backstage/plugin-kubernetes-common'; import * as k8sTypes from '@backstage/plugin-kubernetes-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * @@ -34,7 +34,7 @@ export type ServiceLocatorMethod = * @public */ export interface KubernetesObjectsProviderOptions { - logger: Logger; + logger: LoggerService; config: Config; fetcher: k8sTypes.KubernetesFetcher; serviceLocator: k8sTypes.KubernetesServiceLocator; diff --git a/plugins/lighthouse-backend/api-report.md b/plugins/lighthouse-backend/api-report.md index 44379d6569..c39f7a9c28 100644 --- a/plugins/lighthouse-backend/api-report.md +++ b/plugins/lighthouse-backend/api-report.md @@ -8,7 +8,7 @@ import { BackendFeature } from '@backstage/backend-plugin-api'; import { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { DiscoveryService } from '@backstage/backend-plugin-api'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { TokenManager } from '@backstage/backend-common'; @@ -23,7 +23,7 @@ export interface CreateLighthouseSchedulerOptions { // (undocumented) discovery: DiscoveryService; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) scheduler?: PluginTaskScheduler; // (undocumented) diff --git a/plugins/lighthouse-backend/src/plugin.ts b/plugins/lighthouse-backend/src/plugin.ts index 6a36e3f189..e68d6a6d26 100644 --- a/plugins/lighthouse-backend/src/plugin.ts +++ b/plugins/lighthouse-backend/src/plugin.ts @@ -14,10 +14,9 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { - createBackendPlugin, coreServices, + createBackendPlugin, } from '@backstage/backend-plugin-api'; import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha'; @@ -50,12 +49,10 @@ export const lighthousePlugin = createBackendPlugin({ discovery, auth, }) { - const winstonLogger = loggerToWinstonLogger(logger); - await createScheduler({ catalogClient, config, - logger: winstonLogger, + logger, scheduler, tokenManager, discovery, diff --git a/plugins/lighthouse-backend/src/service/createScheduler.ts b/plugins/lighthouse-backend/src/service/createScheduler.ts index 6f0ef497a5..52f586a497 100644 --- a/plugins/lighthouse-backend/src/service/createScheduler.ts +++ b/plugins/lighthouse-backend/src/service/createScheduler.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { Logger } from 'winston'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { CATALOG_FILTER_EXISTS, CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; @@ -22,14 +21,18 @@ import { LighthouseRestApi } from '@backstage/plugin-lighthouse-common'; import { stringifyEntityRef } from '@backstage/catalog-model'; import { LighthouseAuditScheduleImpl } from '../config'; import { - TokenManager, createLegacyAuthAdapters, + TokenManager, } from '@backstage/backend-common'; -import { AuthService, DiscoveryService } from '@backstage/backend-plugin-api'; +import { + AuthService, + DiscoveryService, + LoggerService, +} from '@backstage/backend-plugin-api'; /** @public **/ export interface CreateLighthouseSchedulerOptions { - logger: Logger; + logger: LoggerService; config: Config; discovery: DiscoveryService; scheduler?: PluginTaskScheduler; diff --git a/plugins/linguist-backend/api-report.md b/plugins/linguist-backend/api-report.md index 31892fcdb1..e59b1229f7 100644 --- a/plugins/linguist-backend/api-report.md +++ b/plugins/linguist-backend/api-report.md @@ -15,7 +15,7 @@ import { HttpAuthService } from '@backstage/backend-plugin-api'; import { HumanDuration } from '@backstage/types'; import { Languages } from '@backstage/plugin-linguist-common'; import { LanguageType } from '@backstage/plugin-linguist-common'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginDatabaseManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; @@ -74,7 +74,7 @@ export interface LinguistTagsProcessorOptions { languageMap?: Record; languageTypes?: LanguageType[]; // (undocumented) - logger: Logger; + logger: LoggerService; shouldProcessEntity?: ShouldProcessEntity; } @@ -109,7 +109,7 @@ export interface RouterOptions { // (undocumented) linguistBackendApi?: LinguistBackendApi; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) reader: UrlReader; // (undocumented) diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json index 993c6d498f..1e933300b1 100644 --- a/plugins/linguist-backend/package.json +++ b/plugins/linguist-backend/package.json @@ -52,7 +52,6 @@ "luxon": "^3.0.0", "node-fetch": "^2.6.7", "uuid": "^9.0.0", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/linguist-backend/src/api/LinguistBackendClient.ts b/plugins/linguist-backend/src/api/LinguistBackendClient.ts index d2c2a9124a..23236f5f85 100644 --- a/plugins/linguist-backend/src/api/LinguistBackendClient.ts +++ b/plugins/linguist-backend/src/api/LinguistBackendClient.ts @@ -19,18 +19,17 @@ import { EntityResults, Language, Languages, + LINGUIST_ANNOTATION, } from '@backstage/plugin-linguist-common'; import { CATALOG_FILTER_EXISTS, - GetEntitiesRequest, CatalogApi, + GetEntitiesRequest, } from '@backstage/catalog-client'; import { UrlReader } from '@backstage/backend-common'; import { DateTime } from 'luxon'; -import { LINGUIST_ANNOTATION } from '@backstage/plugin-linguist-common'; import { LinguistBackendStore } from '../db'; -import { Logger } from 'winston'; import fs from 'fs-extra'; import linguist from 'linguist-js'; import { @@ -40,7 +39,7 @@ import { import { assertError } from '@backstage/errors'; import { HumanDuration } from '@backstage/types'; import { Results } from 'linguist-js/dist/types'; -import { type AuthService } from '@backstage/backend-plugin-api'; +import { type AuthService, LoggerService } from '@backstage/backend-plugin-api'; /** @public */ export interface LinguistBackendApi { @@ -50,7 +49,7 @@ export interface LinguistBackendApi { /** @public */ export class LinguistBackendClient implements LinguistBackendApi { - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly store: LinguistBackendStore; private readonly urlReader: UrlReader; private readonly auth: AuthService; @@ -62,7 +61,7 @@ export class LinguistBackendClient implements LinguistBackendApi { private readonly kind: string[]; private readonly linguistJsOptions?: Record; public constructor( - logger: Logger, + logger: LoggerService, store: LinguistBackendStore, urlReader: UrlReader, auth: AuthService, diff --git a/plugins/linguist-backend/src/plugin.ts b/plugins/linguist-backend/src/plugin.ts index e6de4297ad..1a64a10773 100644 --- a/plugins/linguist-backend/src/plugin.ts +++ b/plugins/linguist-backend/src/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -59,7 +58,7 @@ export const linguistPlugin = createBackendPlugin({ await createRouterFromConfig({ auth, httpAuth, - logger: loggerToWinstonLogger(logger), + logger, config, reader, database, diff --git a/plugins/linguist-backend/src/processor/LinguistTagsProcessor.ts b/plugins/linguist-backend/src/processor/LinguistTagsProcessor.ts index b27fe2c5e9..456de3809f 100644 --- a/plugins/linguist-backend/src/processor/LinguistTagsProcessor.ts +++ b/plugins/linguist-backend/src/processor/LinguistTagsProcessor.ts @@ -19,11 +19,10 @@ import { CatalogProcessor, CatalogProcessorCache, } from '@backstage/plugin-catalog-node'; -import { DiscoveryService } from '@backstage/backend-plugin-api'; +import { DiscoveryService, LoggerService } from '@backstage/backend-plugin-api'; import { Languages, LanguageType } from '@backstage/plugin-linguist-common'; import fetch from 'node-fetch'; -import { Logger } from 'winston'; -import { HumanDuration, durationToMilliseconds } from '@backstage/types'; +import { durationToMilliseconds, HumanDuration } from '@backstage/types'; import { Config } from '@backstage/config'; /** @@ -43,7 +42,7 @@ interface CachedData { * @public */ export interface LinguistTagsProcessorOptions { - logger: Logger; + logger: LoggerService; discovery: DiscoveryService; /** * Optional map that gives full control over which linguist languages should be included as tags and @@ -84,7 +83,7 @@ export interface LinguistTagsProcessorOptions { * @public * */ export class LinguistTagsProcessor implements CatalogProcessor { - private logger: Logger; + private logger: LoggerService; private discovery: DiscoveryService; private loggerMeta = { plugin: 'LinguistTagsProcessor' }; private languageMap: Record = {}; diff --git a/plugins/linguist-backend/src/service/router.ts b/plugins/linguist-backend/src/service/router.ts index 7d64edc82e..ec2494b166 100644 --- a/plugins/linguist-backend/src/service/router.ts +++ b/plugins/linguist-backend/src/service/router.ts @@ -24,7 +24,6 @@ import { } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { LinguistBackendApi } from '../api'; import { LinguistBackendDatabase } from '../db'; import { @@ -36,7 +35,11 @@ import { HumanDuration } from '@backstage/types'; import { CatalogClient } from '@backstage/catalog-client'; import { LinguistBackendClient } from '../api/LinguistBackendClient'; import { Config } from '@backstage/config'; -import { AuthService, HttpAuthService } from '@backstage/backend-plugin-api'; +import { + AuthService, + HttpAuthService, + LoggerService, +} from '@backstage/backend-plugin-api'; /** @public */ export interface PluginOptions { @@ -51,7 +54,7 @@ export interface PluginOptions { /** @public */ export interface RouterOptions { linguistBackendApi?: LinguistBackendApi; - logger: Logger; + logger: LoggerService; reader: UrlReader; tokenManager: TokenManager; database: PluginDatabaseManager; diff --git a/plugins/linguist-backend/src/service/standaloneServer.ts b/plugins/linguist-backend/src/service/standaloneServer.ts index 518efed6a0..d7e02967a4 100644 --- a/plugins/linguist-backend/src/service/standaloneServer.ts +++ b/plugins/linguist-backend/src/service/standaloneServer.ts @@ -16,22 +16,22 @@ import { createServiceBuilder, - loadBackendConfig, - HostDiscovery, - UrlReaders, - ServerTokenManager, DatabaseManager, + HostDiscovery, + loadBackendConfig, + ServerTokenManager, + UrlReaders, } from '@backstage/backend-common'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; import { TaskScheduleDefinition } from '@backstage/backend-tasks'; import { ConfigReader } from '@backstage/config'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/nomad-backend/api-report.md b/plugins/nomad-backend/api-report.md index 82bb823d2d..7476fde961 100644 --- a/plugins/nomad-backend/api-report.md +++ b/plugins/nomad-backend/api-report.md @@ -6,7 +6,7 @@ import { BackendFeature } from '@backstage/backend-plugin-api'; import { Config } from '@backstage/config'; import express from 'express'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; @@ -20,7 +20,7 @@ export interface RouterOptions { // (undocumented) config: Config; // (undocumented) - logger: Logger; + logger: LoggerService; } // (No @packageDocumentation comment for this package) diff --git a/plugins/nomad-backend/package.json b/plugins/nomad-backend/package.json index 86024177a8..115071563d 100644 --- a/plugins/nomad-backend/package.json +++ b/plugins/nomad-backend/package.json @@ -39,7 +39,6 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "node-fetch": "^2.6.7", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/nomad-backend/src/plugin.ts b/plugins/nomad-backend/src/plugin.ts index 3c6a34f5fa..551f42cdc7 100644 --- a/plugins/nomad-backend/src/plugin.ts +++ b/plugins/nomad-backend/src/plugin.ts @@ -14,10 +14,9 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { - createBackendPlugin, coreServices, + createBackendPlugin, } from '@backstage/backend-plugin-api'; import { createRouter } from './service/router'; @@ -36,13 +35,12 @@ export const nomadPlugin = createBackendPlugin({ httpRouter: coreServices.httpRouter, }, async init({ logger, config, httpRouter }) { - const winstonLogger = loggerToWinstonLogger(logger); httpRouter.use( await createRouter({ /** * Logger for logging purposes */ - logger: winstonLogger, + logger, config, }), ); diff --git a/plugins/nomad-backend/src/service/router.ts b/plugins/nomad-backend/src/service/router.ts index d6b5aa1fc6..10dd4a4128 100644 --- a/plugins/nomad-backend/src/service/router.ts +++ b/plugins/nomad-backend/src/service/router.ts @@ -20,11 +20,11 @@ import { Config } from '@backstage/config'; import { InputError } from '@backstage/errors'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** @public */ export interface RouterOptions { - logger: Logger; + logger: LoggerService; config: Config; } diff --git a/plugins/nomad-backend/src/service/standaloneServer.ts b/plugins/nomad-backend/src/service/standaloneServer.ts index 133577ffc2..3d952ec294 100644 --- a/plugins/nomad-backend/src/service/standaloneServer.ts +++ b/plugins/nomad-backend/src/service/standaloneServer.ts @@ -15,14 +15,14 @@ */ import { createServiceBuilder } from '@backstage/backend-common'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; import { Config } from '@backstage/config'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { config: Config; enableCors: boolean; - logger: Logger; + logger: LoggerService; port: number; } diff --git a/plugins/periskop-backend/api-report.md b/plugins/periskop-backend/api-report.md index caaed109f9..6b846db055 100644 --- a/plugins/periskop-backend/api-report.md +++ b/plugins/periskop-backend/api-report.md @@ -5,7 +5,7 @@ ```ts import { Config } from '@backstage/config'; import express from 'express'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; @@ -15,7 +15,7 @@ export interface RouterOptions { // (undocumented) config: Config; // (undocumented) - logger: Logger; + logger: LoggerService; } // (No @packageDocumentation comment for this package) diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index 82786076cf..1ada4559fe 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -52,7 +52,6 @@ "express": "^4.17.1", "express-promise-router": "^4.1.0", "node-fetch": "^2.6.7", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/periskop-backend/src/alpha.ts b/plugins/periskop-backend/src/alpha.ts index c18e0dc87d..6e41f8a05d 100644 --- a/plugins/periskop-backend/src/alpha.ts +++ b/plugins/periskop-backend/src/alpha.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -36,9 +35,7 @@ export default createBackendPlugin({ httpRouter: coreServices.httpRouter, }, async init({ config, logger, httpRouter }) { - httpRouter.use( - await createRouter({ config, logger: loggerToWinstonLogger(logger) }), - ); + httpRouter.use(await createRouter({ config, logger })); httpRouter.addAuthPolicy({ allow: 'unauthenticated', path: '/health', diff --git a/plugins/periskop-backend/src/service/router.ts b/plugins/periskop-backend/src/service/router.ts index 38a43c5050..65f15041e5 100644 --- a/plugins/periskop-backend/src/service/router.ts +++ b/plugins/periskop-backend/src/service/router.ts @@ -17,15 +17,15 @@ import { errorHandler } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { PeriskopApi } from '../api/index'; import { Config } from '@backstage/config'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * @public */ export interface RouterOptions { - logger: Logger; + logger: LoggerService; config: Config; } diff --git a/plugins/periskop-backend/src/service/standaloneServer.ts b/plugins/periskop-backend/src/service/standaloneServer.ts index 635b139ccf..e345a5c87c 100644 --- a/plugins/periskop-backend/src/service/standaloneServer.ts +++ b/plugins/periskop-backend/src/service/standaloneServer.ts @@ -19,13 +19,13 @@ import { loadBackendConfig, } from '@backstage/backend-common'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/permission-backend/api-report.md b/plugins/permission-backend/api-report.md index 8b4336ff23..d8d40be440 100644 --- a/plugins/permission-backend/api-report.md +++ b/plugins/permission-backend/api-report.md @@ -9,7 +9,7 @@ import { DiscoveryService } from '@backstage/backend-plugin-api'; import express from 'express'; import { HttpAuthService } from '@backstage/backend-plugin-api'; import { IdentityApi } from '@backstage/plugin-auth-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PermissionPolicy } from '@backstage/plugin-permission-node'; import { UserInfoService } from '@backstage/backend-plugin-api'; @@ -29,7 +29,7 @@ export interface RouterOptions { // (undocumented) identity?: IdentityApi; // (undocumented) - logger: Logger; + logger: LoggerService; // (undocumented) policy: PermissionPolicy; // (undocumented) diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index a684d0d459..ce73675788 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -57,7 +57,6 @@ "express-promise-router": "^4.1.0", "lodash": "^4.17.21", "node-fetch": "^2.6.7", - "winston": "^3.2.1", "yn": "^4.0.0", "zod": "^3.22.4" }, diff --git a/plugins/permission-backend/src/plugin.ts b/plugins/permission-backend/src/plugin.ts index 28555b1836..f0130e4812 100644 --- a/plugins/permission-backend/src/plugin.ts +++ b/plugins/permission-backend/src/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -68,7 +67,6 @@ export const permissionPlugin = createBackendPlugin({ httpAuth, userInfo, }) { - const winstonLogger = loggerToWinstonLogger(logger); if (!policies.policy) { throw new Error( 'No policy module installed! Please install a policy module. If you want to allow all requests, use @backstage/plugin-permission-backend-module-allow-all-policy permissionModuleAllowAllPolicy', @@ -79,7 +77,7 @@ export const permissionPlugin = createBackendPlugin({ await createRouter({ config, discovery, - logger: winstonLogger, + logger, policy: policies.policy, auth, httpAuth, diff --git a/plugins/permission-backend/src/service/router.ts b/plugins/permission-backend/src/service/router.ts index cd7c71fd87..cc45d0b41a 100644 --- a/plugins/permission-backend/src/service/router.ts +++ b/plugins/permission-backend/src/service/router.ts @@ -17,7 +17,6 @@ import { z } from 'zod'; import express, { Request, Response } from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { createLegacyAuthAdapters, errorHandler, @@ -29,11 +28,11 @@ import { } from '@backstage/plugin-auth-node'; import { AuthorizeResult, - EvaluatePermissionResponse, EvaluatePermissionRequest, - IdentifiedPermissionMessage, EvaluatePermissionRequestBatch, + EvaluatePermissionResponse, EvaluatePermissionResponseBatch, + IdentifiedPermissionMessage, isResourcePermission, PermissionAttributes, } from '@backstage/plugin-permission-common'; @@ -53,6 +52,7 @@ import { BackstageUserPrincipal, DiscoveryService, HttpAuthService, + LoggerService, UserInfoService, } from '@backstage/backend-plugin-api'; @@ -101,7 +101,7 @@ const evaluatePermissionRequestBatchSchema: z.ZodSchema ConcreteLunrQuery; // @public export class LunrSearchEngine implements SearchEngine { - constructor(options: { logger: Logger }); + constructor(options: { logger: LoggerService }); // (undocumented) protected docStore: Record; // (undocumented) @@ -86,7 +86,7 @@ export class LunrSearchEngine implements SearchEngine { // (undocumented) protected highlightPreTag: string; // (undocumented) - protected logger: Logger; + protected logger: LoggerService; // (undocumented) protected lunrIndices: Record; // (undocumented) @@ -139,7 +139,7 @@ export type NewlineDelimitedJsonCollatorFactoryOptions = { type: string; searchPattern: string; reader: UrlReader; - logger: Logger; + logger: LoggerService; visibilityPermission?: Permission; }; @@ -168,7 +168,7 @@ export interface RegisterDecoratorParameters { // @public export class Scheduler { - constructor(options: { logger: Logger }); + constructor(options: { logger: LoggerService }); addToSchedule(options: ScheduleTaskParameters): void; start(): void; stop(): void; diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 7f5516be89..44a0c7bbd4 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -56,8 +56,7 @@ "lodash": "^4.17.21", "lunr": "^2.3.9", "ndjson": "^2.0.0", - "uuid": "^9.0.0", - "winston": "^3.2.1" + "uuid": "^9.0.0" }, "devDependencies": { "@backstage/backend-common": "workspace:^", diff --git a/plugins/search-backend-node/src/IndexBuilder.ts b/plugins/search-backend-node/src/IndexBuilder.ts index 98c6853cb1..6f29e4de57 100644 --- a/plugins/search-backend-node/src/IndexBuilder.ts +++ b/plugins/search-backend-node/src/IndexBuilder.ts @@ -18,15 +18,15 @@ import { DocumentDecoratorFactory, DocumentTypeInfo, } from '@backstage/plugin-search-common'; -import { Transform, pipeline } from 'stream'; -import { Logger } from 'winston'; +import { pipeline, Transform } from 'stream'; import { Scheduler } from './Scheduler'; import { - SearchEngine, IndexBuilderOptions, RegisterCollatorParameters, RegisterDecoratorParameters, + SearchEngine, } from './types'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Used for adding collators, decorators and compile them into tasks which are added to a scheduler returned to the caller. @@ -37,7 +37,7 @@ export class IndexBuilder { private decorators: Record; private documentTypes: Record; private searchEngine: SearchEngine; - private logger: Logger; + private logger: LoggerService; constructor(options: IndexBuilderOptions) { this.collators = {}; diff --git a/plugins/search-backend-node/src/Scheduler.ts b/plugins/search-backend-node/src/Scheduler.ts index 39c423263c..7775db086c 100644 --- a/plugins/search-backend-node/src/Scheduler.ts +++ b/plugins/search-backend-node/src/Scheduler.ts @@ -14,8 +14,8 @@ * limitations under the License. */ -import { Logger } from 'winston'; import { TaskFunction, TaskRunner } from '@backstage/backend-tasks'; +import { LoggerService } from '@backstage/backend-plugin-api'; type TaskEnvelope = { task: TaskFunction; @@ -37,12 +37,12 @@ export type ScheduleTaskParameters = { * @public */ export class Scheduler { - private logger: Logger; + private logger: LoggerService; private schedule: { [id: string]: TaskEnvelope }; private abortControllers: AbortController[]; private isRunning: boolean; - constructor(options: { logger: Logger }) { + constructor(options: { logger: LoggerService }) { this.logger = options.logger; this.schedule = {}; this.abortControllers = []; diff --git a/plugins/search-backend-node/src/alpha.ts b/plugins/search-backend-node/src/alpha.ts index 272bef7f84..43bda67658 100644 --- a/plugins/search-backend-node/src/alpha.ts +++ b/plugins/search-backend-node/src/alpha.ts @@ -14,25 +14,20 @@ * limitations under the License. */ -import { Logger } from 'winston'; - import { - createServiceRef, - createServiceFactory, coreServices, + createExtensionPoint, + createServiceFactory, + createServiceRef, + LoggerService, } from '@backstage/backend-plugin-api'; -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { DocumentTypeInfo } from '@backstage/plugin-search-common'; -import { createExtensionPoint } from '@backstage/backend-plugin-api'; import { + IndexBuilder, RegisterCollatorParameters, RegisterDecoratorParameters, -} from '@backstage/plugin-search-backend-node'; - -import { SearchEngine, - IndexBuilder, } from '@backstage/plugin-search-backend-node'; /** @@ -78,7 +73,7 @@ export interface SearchEngineRegistryExtensionPoint { } type DefaultSearchIndexServiceOptions = { - logger: Logger; + logger: LoggerService; }; /** @@ -86,7 +81,7 @@ type DefaultSearchIndexServiceOptions = { * Reponsible for register the indexing task and start the schedule. */ class DefaultSearchIndexService implements SearchIndexService { - private logger: Logger; + private logger: LoggerService; private indexBuilder: IndexBuilder | null = null; private constructor(options: DefaultSearchIndexServiceOptions) { @@ -134,7 +129,7 @@ export const searchIndexServiceRef = createServiceRef({ }, factory({ logger }) { return DefaultSearchIndexService.fromConfig({ - logger: loggerToWinstonLogger(logger), + logger, }); }, }), diff --git a/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.ts b/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.ts index de77f5ba7a..e7d749dd41 100644 --- a/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.ts +++ b/plugins/search-backend-node/src/collators/NewlineDelimitedJsonCollatorFactory.ts @@ -16,11 +16,11 @@ import { Config } from '@backstage/config'; import { DocumentCollatorFactory } from '@backstage/plugin-search-common'; -import { Logger } from 'winston'; import { Permission } from '@backstage/plugin-permission-common'; import { Readable } from 'stream'; import { UrlReader } from '@backstage/backend-common'; import { parse as parseNdjson } from 'ndjson'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Options for instantiate NewlineDelimitedJsonCollatorFactory @@ -30,7 +30,7 @@ export type NewlineDelimitedJsonCollatorFactoryOptions = { type: string; searchPattern: string; reader: UrlReader; - logger: Logger; + logger: LoggerService; visibilityPermission?: Permission; }; @@ -74,7 +74,7 @@ export class NewlineDelimitedJsonCollatorFactory type: string, private readonly searchPattern: string, private readonly reader: UrlReader, - private readonly logger: Logger, + private readonly logger: LoggerService, visibilityPermission: Permission | undefined, ) { this.type = type; diff --git a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts index a2db52f960..1786d07a9d 100644 --- a/plugins/search-backend-node/src/engines/LunrSearchEngine.ts +++ b/plugins/search-backend-node/src/engines/LunrSearchEngine.ts @@ -19,12 +19,12 @@ import { IndexableResultSet, SearchQuery, } from '@backstage/plugin-search-common'; -import { SearchEngine, QueryTranslator } from '../types'; +import { QueryTranslator, SearchEngine } from '../types'; import { MissingIndexError } from '../errors'; import lunr from 'lunr'; import { v4 as uuid } from 'uuid'; -import { Logger } from 'winston'; import { LunrSearchEngineIndexer } from './LunrSearchEngineIndexer'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Type of translated query for the Lunr Search Engine. @@ -54,11 +54,11 @@ export type LunrQueryTranslator = (query: SearchQuery) => ConcreteLunrQuery; export class LunrSearchEngine implements SearchEngine { protected lunrIndices: Record = {}; protected docStore: Record; - protected logger: Logger; + protected logger: LoggerService; protected highlightPreTag: string; protected highlightPostTag: string; - constructor(options: { logger: Logger }) { + constructor(options: { logger: LoggerService }) { this.logger = options.logger; this.docStore = {}; const uuidTag = uuid(); diff --git a/plugins/search-backend-node/src/types.ts b/plugins/search-backend-node/src/types.ts index 742d575ed3..18853d1069 100644 --- a/plugins/search-backend-node/src/types.ts +++ b/plugins/search-backend-node/src/types.ts @@ -14,7 +14,10 @@ * limitations under the License. */ -import { BackstageCredentials } from '@backstage/backend-plugin-api'; +import { + BackstageCredentials, + LoggerService, +} from '@backstage/backend-plugin-api'; import { TaskRunner } from '@backstage/backend-tasks'; import { DocumentCollatorFactory, @@ -23,7 +26,6 @@ import { SearchQuery, } from '@backstage/plugin-search-common'; import { Writable } from 'stream'; -import { Logger } from 'winston'; /** * Options required to instantiate the index builder. @@ -31,7 +33,7 @@ import { Logger } from 'winston'; */ export type IndexBuilderOptions = { searchEngine: SearchEngine; - logger: Logger; + logger: LoggerService; }; /** diff --git a/plugins/search-backend/api-report.md b/plugins/search-backend/api-report.md index 4f99632f28..717a9dbe8b 100644 --- a/plugins/search-backend/api-report.md +++ b/plugins/search-backend/api-report.md @@ -9,7 +9,7 @@ import { DiscoveryService } from '@backstage/backend-plugin-api'; import { DocumentTypeInfo } from '@backstage/plugin-search-common'; import express from 'express'; import { HttpAuthService } from '@backstage/backend-plugin-api'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PermissionAuthorizer } from '@backstage/plugin-permission-common'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { SearchEngine } from '@backstage/plugin-search-backend-node'; @@ -24,7 +24,7 @@ export type RouterOptions = { discovery?: DiscoveryService; permissions: PermissionEvaluator | PermissionAuthorizer; config: Config; - logger: Logger; + logger: LoggerService; auth?: AuthService; httpAuth?: HttpAuthService; }; diff --git a/plugins/search-backend/src/alpha.ts b/plugins/search-backend/src/alpha.ts index 86bbcdeebe..0ca5777102 100644 --- a/plugins/search-backend/src/alpha.ts +++ b/plugins/search-backend/src/alpha.ts @@ -18,19 +18,18 @@ import { coreServices, createBackendPlugin, } from '@backstage/backend-plugin-api'; -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { + LunrSearchEngine, RegisterCollatorParameters, RegisterDecoratorParameters, SearchEngine, - LunrSearchEngine, } from '@backstage/plugin-search-backend-node'; import { - searchIndexServiceRef, - searchIndexRegistryExtensionPoint, - SearchIndexRegistryExtensionPoint, SearchEngineRegistryExtensionPoint, searchEngineRegistryExtensionPoint, + searchIndexRegistryExtensionPoint, + SearchIndexRegistryExtensionPoint, + searchIndexServiceRef, } from '@backstage/plugin-search-backend-node/alpha'; import { createRouter } from './service/router'; @@ -114,7 +113,7 @@ export default createBackendPlugin({ let searchEngine = searchEngineRegistry.getSearchEngine(); if (!searchEngine) { searchEngine = new LunrSearchEngine({ - logger: loggerToWinstonLogger(logger), + logger, }); } @@ -133,7 +132,7 @@ export default createBackendPlugin({ permissions, auth, httpAuth, - logger: loggerToWinstonLogger(logger), + logger, engine: searchEngine, types: searchIndexService.getDocumentTypes(), }); diff --git a/plugins/search-backend/src/service/router.ts b/plugins/search-backend/src/service/router.ts index ae470ba40e..250be2853c 100644 --- a/plugins/search-backend/src/service/router.ts +++ b/plugins/search-backend/src/service/router.ts @@ -15,12 +15,11 @@ */ import express from 'express'; -import { Logger } from 'winston'; import { z } from 'zod'; import { - HostDiscovery, createLegacyAuthAdapters, errorHandler, + HostDiscovery, } from '@backstage/backend-common'; import { InputError } from '@backstage/errors'; import { Config } from '@backstage/config'; @@ -42,6 +41,7 @@ import { AuthService, DiscoveryService, HttpAuthService, + LoggerService, } from '@backstage/backend-plugin-api'; const jsonObjectSchema: z.ZodSchema = z.lazy(() => { @@ -68,7 +68,7 @@ export type RouterOptions = { discovery?: DiscoveryService; permissions: PermissionEvaluator | PermissionAuthorizer; config: Config; - logger: Logger; + logger: LoggerService; auth?: AuthService; httpAuth?: HttpAuthService; }; diff --git a/plugins/sonarqube-backend/api-report.md b/plugins/sonarqube-backend/api-report.md index c3c684f9d4..3c902c7fa7 100644 --- a/plugins/sonarqube-backend/api-report.md +++ b/plugins/sonarqube-backend/api-report.md @@ -6,7 +6,7 @@ import { BackendFeature } from '@backstage/backend-plugin-api'; import { Config } from '@backstage/config'; import express from 'express'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; // @public export function createRouter(options: RouterOptions): Promise; @@ -26,7 +26,7 @@ export class DefaultSonarqubeInfoProvider implements SonarqubeInfoProvider { // @public export interface RouterOptions { - logger: Logger; + logger: LoggerService; sonarqubeInfoProvider: SonarqubeInfoProvider; } diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index e24267524c..505cb96fc2 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -40,7 +40,6 @@ "express": "^4.18.1", "express-promise-router": "^4.1.0", "node-fetch": "^2.6.7", - "winston": "^3.2.1", "yn": "^5.0.0" }, "devDependencies": { diff --git a/plugins/sonarqube-backend/src/plugin.ts b/plugins/sonarqube-backend/src/plugin.ts index fd4fb77fb4..a4613d6204 100644 --- a/plugins/sonarqube-backend/src/plugin.ts +++ b/plugins/sonarqube-backend/src/plugin.ts @@ -14,10 +14,9 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { - createBackendPlugin, coreServices, + createBackendPlugin, } from '@backstage/backend-plugin-api'; import { DefaultSonarqubeInfoProvider } from './service/sonarqubeInfoProvider'; import { createRouter } from './service/router'; @@ -37,13 +36,12 @@ export const sonarqubePlugin = createBackendPlugin({ httpRouter: coreServices.httpRouter, }, async init({ logger, config, httpRouter }) { - const winstonLogger = loggerToWinstonLogger(logger); httpRouter.use( await createRouter({ /** * Logger for logging purposes */ - logger: winstonLogger, + logger, /** * Info provider to be able to get all necessary information for the APIs */ diff --git a/plugins/sonarqube-backend/src/service/router.ts b/plugins/sonarqube-backend/src/service/router.ts index 5a993b5d59..d3071277be 100644 --- a/plugins/sonarqube-backend/src/service/router.ts +++ b/plugins/sonarqube-backend/src/service/router.ts @@ -17,9 +17,9 @@ import { errorHandler } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; -import { Logger } from 'winston'; import { SonarqubeInfoProvider } from './sonarqubeInfoProvider'; import { InputError } from '@backstage/errors'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * Dependencies needed by the router @@ -29,7 +29,7 @@ export interface RouterOptions { /** * Logger for logging purposes */ - logger: Logger; + logger: LoggerService; /** * Info provider to be able to get all necessary information for the APIs */ diff --git a/plugins/sonarqube-backend/src/service/standaloneServer.ts b/plugins/sonarqube-backend/src/service/standaloneServer.ts index 06a8d4ffb2..d438e805d4 100644 --- a/plugins/sonarqube-backend/src/service/standaloneServer.ts +++ b/plugins/sonarqube-backend/src/service/standaloneServer.ts @@ -19,14 +19,14 @@ import { loadBackendConfig, } from '@backstage/backend-common'; import { Server } from 'http'; -import { Logger } from 'winston'; import { createRouter } from './router'; import { DefaultSonarqubeInfoProvider } from './sonarqubeInfoProvider'; +import { LoggerService } from '@backstage/backend-plugin-api'; export interface ServerOptions { port: number; enableCors: boolean; - logger: Logger; + logger: LoggerService; } export async function startStandaloneServer( diff --git a/plugins/tech-insights-backend-module-jsonfc/api-report.md b/plugins/tech-insights-backend-module-jsonfc/api-report.md index 790aa0b666..7fc63bc5ea 100644 --- a/plugins/tech-insights-backend-module-jsonfc/api-report.md +++ b/plugins/tech-insights-backend-module-jsonfc/api-report.md @@ -9,7 +9,7 @@ import { CheckResponse } from '@backstage/plugin-tech-insights-common'; import { CheckValidationResponse } from '@backstage/plugin-tech-insights-node'; import { Config } from '@backstage/config'; import { FactChecker } from '@backstage/plugin-tech-insights-node'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { Operator } from 'json-rules-engine'; import { TechInsightCheck } from '@backstage/plugin-tech-insights-node'; import { TechInsightCheckRegistry } from '@backstage/plugin-tech-insights-node'; @@ -75,7 +75,7 @@ export class JsonRulesEngineFactCheckerFactory { // @public export type JsonRulesEngineFactCheckerFactoryOptions = { checks: TechInsightJsonRuleCheck[]; - logger: Logger; + logger: LoggerService; checkRegistry?: TechInsightCheckRegistry; operators?: Operator[]; }; @@ -84,7 +84,7 @@ export type JsonRulesEngineFactCheckerFactoryOptions = { export type JsonRulesEngineFactCheckerOptions = { checks: TechInsightJsonRuleCheck[]; repository: TechInsightsStore; - logger: Logger; + logger: LoggerService; checkRegistry?: TechInsightCheckRegistry; operators?: Operator[]; }; diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index 1b1b8a2c1b..ea2e4fdd5c 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -47,8 +47,7 @@ "ajv": "^8.10.0", "json-rules-engine": "^6.1.2", "lodash": "^4.17.21", - "luxon": "^3.0.0", - "winston": "^3.2.1" + "luxon": "^3.0.0" }, "devDependencies": { "@backstage/backend-test-utils": "workspace:^", diff --git a/plugins/tech-insights-backend-module-jsonfc/src/module/techInsightsModuleJsonRulesEngineFactCheckerFactory.ts b/plugins/tech-insights-backend-module-jsonfc/src/module/techInsightsModuleJsonRulesEngineFactCheckerFactory.ts index 8527b91d9d..4a5f1c7816 100644 --- a/plugins/tech-insights-backend-module-jsonfc/src/module/techInsightsModuleJsonRulesEngineFactCheckerFactory.ts +++ b/plugins/tech-insights-backend-module-jsonfc/src/module/techInsightsModuleJsonRulesEngineFactCheckerFactory.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendModule, @@ -40,9 +39,8 @@ export const techInsightsModuleJsonRulesEngineFactCheckerFactory = techInsights: techInsightsFactCheckerFactoryExtensionPoint, }, async init({ config, logger, techInsights }) { - const winstonLogger = loggerToWinstonLogger(logger); const factory = JsonRulesEngineFactCheckerFactory.fromConfig(config, { - logger: winstonLogger, + logger, }); techInsights.setFactCheckerFactory(factory); }, diff --git a/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts b/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts index 51609bc916..ed03925400 100644 --- a/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts +++ b/plugins/tech-insights-backend-module-jsonfc/src/service/JsonRulesEngineFactChecker.ts @@ -18,11 +18,11 @@ import { Config } from '@backstage/config'; import { isError } from '@backstage/errors'; import { FactResponse } from '@backstage/plugin-tech-insights-common'; import { - FactChecker, - TechInsightCheckRegistry, - FlatTechInsightFact, - TechInsightsStore, CheckValidationResponse, + FactChecker, + FlatTechInsightFact, + TechInsightCheckRegistry, + TechInsightsStore, } from '@backstage/plugin-tech-insights-node'; import Ajv, { SchemaObject } from 'ajv'; import { @@ -32,12 +32,12 @@ import { TopLevelCondition, } from 'json-rules-engine'; import { pick } from 'lodash'; -import { Logger } from 'winston'; import { JSON_RULE_ENGINE_CHECK_TYPE } from '../constants'; import { JsonRuleBooleanCheckResult, TechInsightJsonRuleCheck } from '../types'; import { DefaultCheckRegistry } from './CheckRegistry'; import { readChecksFromConfig } from './config'; import * as validationSchema from './validation-schema.json'; +import { LoggerService } from '@backstage/backend-plugin-api'; const noopEvent = { type: 'noop', @@ -52,7 +52,7 @@ const noopEvent = { export type JsonRulesEngineFactCheckerOptions = { checks: TechInsightJsonRuleCheck[]; repository: TechInsightsStore; - logger: Logger; + logger: LoggerService; checkRegistry?: TechInsightCheckRegistry; operators?: Operator[]; }; @@ -68,7 +68,7 @@ export class JsonRulesEngineFactChecker { private readonly checkRegistry: TechInsightCheckRegistry; private repository: TechInsightsStore; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly validationSchema: SchemaObject; private readonly operators: Operator[]; @@ -164,7 +164,7 @@ export class JsonRulesEngineFactChecker const msg = 'Failed to to validate conditions against JSON schema'; this.logger.warn( 'Failed to to validate conditions against JSON schema', - validator.errors, + new Error(JSON.stringify(validator.errors)), ); return { valid: false, @@ -346,7 +346,7 @@ export class JsonRulesEngineFactChecker */ export type JsonRulesEngineFactCheckerFactoryOptions = { checks: TechInsightJsonRuleCheck[]; - logger: Logger; + logger: LoggerService; checkRegistry?: TechInsightCheckRegistry; operators?: Operator[]; }; @@ -360,7 +360,7 @@ export type JsonRulesEngineFactCheckerFactoryOptions = { */ export class JsonRulesEngineFactCheckerFactory { private readonly checks: TechInsightJsonRuleCheck[]; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly checkRegistry?: TechInsightCheckRegistry; private readonly operators?: Operator[]; diff --git a/plugins/tech-insights-backend/api-report.md b/plugins/tech-insights-backend/api-report.md index c2121bf655..dc8619aa52 100644 --- a/plugins/tech-insights-backend/api-report.md +++ b/plugins/tech-insights-backend/api-report.md @@ -16,7 +16,7 @@ import { FactRetriever } from '@backstage/plugin-tech-insights-node'; import { FactRetrieverRegistration } from '@backstage/plugin-tech-insights-node'; import { FactRetrieverRegistry as FactRetrieverRegistry_2 } from '@backstage/plugin-tech-insights-node'; import { HumanDuration } from '@backstage/types'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PersistenceContext as PersistenceContext_2 } from '@backstage/plugin-tech-insights-node'; import { PluginDatabaseManager } from '@backstage/backend-common'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; @@ -79,7 +79,7 @@ export type PersistenceContext = PersistenceContext_2; // @public export type PersistenceContextOptions = { - logger: Logger; + logger: LoggerService; }; // @public @@ -89,7 +89,7 @@ export interface RouterOptions< > { config: Config; factChecker?: FactChecker; - logger: Logger; + logger: LoggerService; persistenceContext: PersistenceContext_2; } @@ -123,7 +123,7 @@ export interface TechInsightsOptions< factRetrieverRegistry?: FactRetrieverRegistry_2; factRetrievers?: FactRetrieverRegistration[]; // (undocumented) - logger: Logger; + logger: LoggerService; persistenceContext?: PersistenceContext_2; // (undocumented) scheduler: PluginTaskScheduler; diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 82e0cb3236..a3cf4a8db0 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -57,7 +57,6 @@ "luxon": "^3.0.0", "semver": "^7.5.3", "uuid": "^9.0.0", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/tech-insights-backend/src/plugin/plugin.ts b/plugins/tech-insights-backend/src/plugin/plugin.ts index e97a0c98d8..e56539ec28 100644 --- a/plugins/tech-insights-backend/src/plugin/plugin.ts +++ b/plugins/tech-insights-backend/src/plugin/plugin.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendPlugin, @@ -114,7 +113,6 @@ export const techInsightsPlugin = createBackendPlugin({ tokenManager, auth, }) { - const winstonLogger = loggerToWinstonLogger(logger); const factRetrievers: FactRetrieverRegistration[] = Object.entries( addedFactRetrievers, ) @@ -134,7 +132,7 @@ export const techInsightsPlugin = createBackendPlugin({ factCheckerFactory, factRetrieverRegistry, factRetrievers, - logger: winstonLogger, + logger, persistenceContext, scheduler, tokenManager, @@ -145,7 +143,7 @@ export const techInsightsPlugin = createBackendPlugin({ await createRouter({ ...context, config, - logger: winstonLogger, + logger, }), ); }, diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts index 04035ca8c7..db1ee7f2a9 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverEngine.ts @@ -22,9 +22,9 @@ import { TechInsightFact, TechInsightsStore, } from '@backstage/plugin-tech-insights-node'; -import { Logger } from 'winston'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; import { Duration } from 'luxon'; +import { LoggerService } from '@backstage/backend-plugin-api'; function randomDailyCron() { const rand = (min: number, max: number) => @@ -72,7 +72,7 @@ export class DefaultFactRetrieverEngine implements FactRetrieverEngine { private readonly repository: TechInsightsStore, private readonly factRetrieverRegistry: FactRetrieverRegistry, private readonly factRetrieverContext: FactRetrieverContext, - private readonly logger: Logger, + private readonly logger: LoggerService, private readonly scheduler: PluginTaskScheduler, private readonly defaultCadence?: string, private readonly defaultTimeout?: Duration, diff --git a/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts b/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts index 761a6bd273..e03d5b8704 100644 --- a/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts +++ b/plugins/tech-insights-backend/src/service/persistence/TechInsightsDatabase.ts @@ -26,9 +26,9 @@ import { FactSchema } from '@backstage/plugin-tech-insights-common'; import { rsort } from 'semver'; import { groupBy, omit } from 'lodash'; import { DateTime } from 'luxon'; -import { Logger } from 'winston'; import { parseEntityRef, stringifyEntityRef } from '@backstage/catalog-model'; import { isMaxItems, isTtl } from '../fact/factRetrievers/utils'; +import { LoggerService } from '@backstage/backend-plugin-api'; type Transaction = Knex.Transaction; @@ -55,7 +55,10 @@ type RawDbFactSchemaRow = { export class TechInsightsDatabase implements TechInsightsStore { private readonly CHUNK_SIZE = 50; - constructor(private readonly db: Knex, private readonly logger: Logger) {} + constructor( + private readonly db: Knex, + private readonly logger: LoggerService, + ) {} async getLatestSchemas(ids?: string[]): Promise { const queryBuilder = this.db('fact_schemas'); diff --git a/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts b/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts index 3ddae3197f..e3792081e2 100644 --- a/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts +++ b/plugins/tech-insights-backend/src/service/persistence/persistenceContext.ts @@ -18,9 +18,9 @@ import { PluginDatabaseManager, resolvePackagePath, } from '@backstage/backend-common'; -import { Logger } from 'winston'; import { TechInsightsDatabase } from './TechInsightsDatabase'; import { PersistenceContext } from '@backstage/plugin-tech-insights-node'; +import { LoggerService } from '@backstage/backend-plugin-api'; const migrationsDir = resolvePackagePath( '@backstage/plugin-tech-insights-backend', @@ -33,7 +33,7 @@ const migrationsDir = resolvePackagePath( * @public */ export type PersistenceContextOptions = { - logger: Logger; + logger: LoggerService; }; const defaultOptions: PersistenceContextOptions = { diff --git a/plugins/tech-insights-backend/src/service/router.ts b/plugins/tech-insights-backend/src/service/router.ts index 53c1351ffa..8e01a73488 100644 --- a/plugins/tech-insights-backend/src/service/router.ts +++ b/plugins/tech-insights-backend/src/service/router.ts @@ -24,7 +24,6 @@ import { } from '@backstage/plugin-tech-insights-node'; import { CheckResult } from '@backstage/plugin-tech-insights-common'; -import { Logger } from 'winston'; import { DateTime } from 'luxon'; import { CompoundEntityRef, @@ -33,6 +32,7 @@ import { } from '@backstage/catalog-model'; import { errorHandler } from '@backstage/backend-common'; import { serializeError } from '@backstage/errors'; +import { LoggerService } from '@backstage/backend-plugin-api'; /** * @public @@ -63,7 +63,7 @@ export interface RouterOptions< /** * Implementation of Winston logger */ - logger: Logger; + logger: LoggerService; } /** diff --git a/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts b/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts index 7b6f04b183..36c94c31d7 100644 --- a/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts +++ b/plugins/tech-insights-backend/src/service/techInsightsContextBuilder.ts @@ -18,14 +18,13 @@ import { DefaultFactRetrieverEngine, FactRetrieverEngine, } from './fact/FactRetrieverEngine'; -import { Logger } from 'winston'; import { DefaultFactRetrieverRegistry } from './fact/FactRetrieverRegistry'; import { Config } from '@backstage/config'; import { + createLegacyAuthAdapters, PluginDatabaseManager, PluginEndpointDiscovery, TokenManager, - createLegacyAuthAdapters, } from '@backstage/backend-common'; import { FactChecker, @@ -38,7 +37,7 @@ import { import { initializePersistenceContext } from './persistence'; import { CheckResult } from '@backstage/plugin-tech-insights-common'; import { PluginTaskScheduler } from '@backstage/backend-tasks'; -import { AuthService } from '@backstage/backend-plugin-api'; +import { AuthService, LoggerService } from '@backstage/backend-plugin-api'; /** * @public @@ -78,7 +77,7 @@ export interface TechInsightsOptions< */ persistenceContext?: PersistenceContext; - logger: Logger; + logger: LoggerService; config: Config; discovery: PluginEndpointDiscovery; database: PluginDatabaseManager; diff --git a/plugins/tech-insights-node/api-report.md b/plugins/tech-insights-node/api-report.md index bf4ee10dea..dc680557ce 100644 --- a/plugins/tech-insights-node/api-report.md +++ b/plugins/tech-insights-node/api-report.md @@ -13,7 +13,7 @@ import { ExtensionPoint } from '@backstage/backend-plugin-api'; import { FactSchema } from '@backstage/plugin-tech-insights-common'; import { HumanDuration } from '@backstage/types'; import { JsonValue } from '@backstage/types'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { TokenManager } from '@backstage/backend-common'; @@ -65,7 +65,7 @@ export interface FactRetriever { export type FactRetrieverContext = { config: Config; discovery: PluginEndpointDiscovery; - logger: Logger; + logger: LoggerService; tokenManager: TokenManager; auth: AuthService; entityFilter?: diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index bd703fadf3..b63746c727 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -41,8 +41,7 @@ "@backstage/plugin-tech-insights-common": "workspace:^", "@backstage/types": "workspace:^", "@types/luxon": "^3.0.0", - "luxon": "^3.0.0", - "winston": "^3.2.1" + "luxon": "^3.0.0" }, "devDependencies": { "@backstage/cli": "workspace:^" diff --git a/plugins/tech-insights-node/src/facts.ts b/plugins/tech-insights-node/src/facts.ts index 6d40bf615d..b649556ffb 100644 --- a/plugins/tech-insights-node/src/facts.ts +++ b/plugins/tech-insights-node/src/facts.ts @@ -21,8 +21,7 @@ import { TokenManager, } from '@backstage/backend-common'; import { FactSchema } from '@backstage/plugin-tech-insights-common'; -import { Logger } from 'winston'; -import { AuthService } from '@backstage/backend-plugin-api'; +import { AuthService, LoggerService } from '@backstage/backend-plugin-api'; /** * A container for facts. The shape of the fact records needs to correspond to the FactSchema with same `ref` value. @@ -91,7 +90,7 @@ export type FlatTechInsightFact = TechInsightFact & { export type FactRetrieverContext = { config: Config; discovery: PluginEndpointDiscovery; - logger: Logger; + logger: LoggerService; tokenManager: TokenManager; auth: AuthService; entityFilter?: diff --git a/plugins/todo-backend/api-report.md b/plugins/todo-backend/api-report.md index 3244b397eb..2a4d037a6c 100644 --- a/plugins/todo-backend/api-report.md +++ b/plugins/todo-backend/api-report.md @@ -8,7 +8,7 @@ import { CatalogApi } from '@backstage/catalog-client'; import { CompoundEntityRef } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import express from 'express'; -import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { ScmIntegrations } from '@backstage/integration'; import { ServiceRef } from '@backstage/backend-plugin-api'; import { UrlReader } from '@backstage/backend-common'; @@ -136,7 +136,7 @@ export class TodoScmReader implements TodoReader { // @public (undocumented) export type TodoScmReaderOptions = { - logger: Logger; + logger: LoggerService; reader: UrlReader; integrations: ScmIntegrations; parser?: TodoParser; diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 9575292283..ae540ff100 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -46,7 +46,6 @@ "@types/express": "^4.17.6", "express": "^4.17.1", "leasot": "^12.0.0", - "winston": "^3.2.1", "yn": "^4.0.0" }, "devDependencies": { diff --git a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts index 2ce1771ecb..7c558a8601 100644 --- a/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts +++ b/plugins/todo-backend/src/lib/TodoReader/TodoScmReader.ts @@ -14,9 +14,8 @@ * limitations under the License. */ -import { loggerToWinstonLogger, UrlReader } from '@backstage/backend-common'; +import { UrlReader } from '@backstage/backend-common'; import { ScmIntegrations } from '@backstage/integration'; -import { Logger } from 'winston'; import { ReadTodosOptions, @@ -32,6 +31,7 @@ import { coreServices, createServiceFactory, createServiceRef, + LoggerService, } from '@backstage/backend-plugin-api'; const excludedExtensions = [ @@ -48,7 +48,7 @@ const MAX_FILE_SIZE = 200000; /** @public */ export type TodoScmReaderOptions = { - logger: Logger; + logger: LoggerService; reader: UrlReader; integrations: ScmIntegrations; parser?: TodoParser; @@ -62,7 +62,7 @@ type CacheItem = { /** @public */ export class TodoScmReader implements TodoReader { - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly reader: UrlReader; private readonly parser: TodoParser; private readonly integrations: ScmIntegrations; @@ -187,9 +187,8 @@ export const todoReaderServiceRef = createServiceRef({ logger: coreServices.logger, }, factory: async ({ reader, config, logger }) => { - const winstonLogger = loggerToWinstonLogger(logger); return TodoScmReader.fromConfig(config, { - logger: winstonLogger, + logger, reader, }); }, diff --git a/yarn.lock b/yarn.lock index 2029338d94..0370652b83 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3504,6 +3504,7 @@ __metadata: resolution: "@backstage/backend-tasks@workspace:packages/backend-tasks" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" @@ -3517,7 +3518,6 @@ __metadata: luxon: ^3.0.0 uuid: ^9.0.0 wait-for-expect: ^3.0.2 - winston: ^3.2.1 zod: ^3.22.4 languageName: unknown linkType: soft @@ -4406,7 +4406,6 @@ __metadata: marked: ^12.0.0 node-fetch: ^2.6.5 supertest: ^6.1.3 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4459,6 +4458,7 @@ __metadata: dependencies: "@backstage/backend-common": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@types/express": "*" @@ -4468,7 +4468,6 @@ __metadata: express-promise-router: ^4.1.0 http-proxy-middleware: ^2.0.0 supertest: ^6.1.6 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -4722,7 +4721,6 @@ __metadata: luxon: ^3.0.0 node-fetch: ^2.6.7 supertest: ^6.1.3 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -5165,7 +5163,6 @@ __metadata: mime-types: ^2.1.27 p-limit: ^3.1.0 supertest: ^6.1.6 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -5233,7 +5230,6 @@ __metadata: "@types/supertest": ^2.0.8 express: ^4.17.1 express-promise-router: ^4.1.0 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -5345,7 +5341,6 @@ __metadata: express: ^4.17.1 express-promise-router: ^4.1.0 knex: ^3.0.0 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -5478,7 +5473,6 @@ __metadata: msw: ^1.0.0 node-fetch: ^2.6.7 uuid: ^9.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -5545,7 +5539,6 @@ __metadata: msw: ^1.0.0 node-fetch: ^2.6.7 uuid: ^9.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -5563,7 +5556,6 @@ __metadata: "@backstage/plugin-catalog-node": "workspace:^" "@backstage/plugin-kubernetes-common": "workspace:^" "@google-cloud/container": ^5.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -5586,7 +5578,6 @@ __metadata: msw: ^1.0.0 node-fetch: ^2.6.7 uuid: ^9.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -5634,7 +5625,6 @@ __metadata: msw: ^1.0.0 node-fetch: ^2.6.7 uuid: ^9.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -5658,7 +5648,6 @@ __metadata: msw: ^1.0.0 node-fetch: ^2.6.7 uuid: ^9.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -5686,7 +5675,6 @@ __metadata: knex: ^3.0.0 luxon: ^3.0.0 uuid: ^9.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -5735,7 +5723,6 @@ __metadata: p-limit: ^3.0.2 qs: ^6.9.4 uuid: ^9.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -5781,7 +5768,6 @@ __metadata: msw: ^1.0.0 node-fetch: ^2.6.7 uuid: ^9.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -5868,7 +5854,7 @@ __metadata: supertest: ^6.1.3 uuid: ^9.0.0 wait-for-expect: ^3.0.2 - winston: ^3.2.1 + winston: ^3.13.0 yaml: ^2.0.0 yn: ^4.0.0 zod: ^3.22.4 @@ -6296,7 +6282,6 @@ __metadata: knex: ^3.0.0 supertest: ^6.1.6 uuid: ^9.0.0 - winston: ^3.2.1 xml2js: ^0.6.0 yn: ^4.0.0 languageName: unknown @@ -6477,7 +6462,6 @@ __metadata: ping: ^0.4.1 semver: ^7.5.3 supertest: ^6.2.4 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6565,7 +6549,6 @@ __metadata: knex: ^3.0.0 node-fetch: ^2.6.7 supertest: ^6.2.4 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -6782,7 +6765,6 @@ __metadata: lodash: ^4.17.21 node-fetch: ^2.6.7 supertest: ^6.2.4 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -7357,7 +7339,6 @@ __metadata: express-promise-router: ^4.1.0 jenkins: ^1.0.0 node-fetch: ^2.6.7 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -7419,7 +7400,6 @@ __metadata: kafkajs: ^2.0.0 lodash: ^4.17.21 supertest: ^6.1.3 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -7731,7 +7711,6 @@ __metadata: node-fetch: ^2.6.7 supertest: ^6.2.4 uuid: ^9.0.0 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -7867,7 +7846,6 @@ __metadata: express-promise-router: ^4.1.0 node-fetch: ^2.6.7 supertest: ^6.2.4 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -8154,7 +8132,6 @@ __metadata: express-promise-router: ^4.1.0 node-fetch: ^2.6.7 supertest: ^6.1.6 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -8220,7 +8197,6 @@ __metadata: msw: ^1.0.0 node-fetch: ^2.6.7 supertest: ^6.1.6 - winston: ^3.2.1 yn: ^4.0.0 zod: ^3.22.4 languageName: unknown @@ -8308,7 +8284,6 @@ __metadata: node-fetch: ^2.6.7 supertest: ^6.1.3 uuid: ^9.0.0 - winston: ^3.2.1 yn: ^4.0.0 zod: ^3.22.4 languageName: unknown @@ -8647,7 +8622,6 @@ __metadata: libsodium-wrappers: ^0.7.11 octokit: ^3.0.0 octokit-plugin-create-pull-request: ^5.0.0 - winston: ^3.2.1 yaml: ^2.0.0 languageName: unknown linkType: soft @@ -9023,7 +8997,6 @@ __metadata: "@backstage/plugin-search-common": "workspace:^" msw: ^1.2.1 node-fetch: ^2.6.7 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -9060,7 +9033,6 @@ __metadata: msw: ^1.2.1 node-fetch: ^2.6.7 qs: ^6.9.4 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -9086,7 +9058,6 @@ __metadata: msw: ^1.0.0 node-fetch: ^2.6.7 p-limit: ^3.1.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -9108,7 +9079,6 @@ __metadata: lunr: ^2.3.9 ndjson: ^2.0.0 uuid: ^9.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -9389,7 +9359,6 @@ __metadata: msw: ^1.0.0 node-fetch: ^2.6.7 supertest: ^6.2.4 - winston: ^3.2.1 yn: ^5.0.0 languageName: unknown linkType: soft @@ -9558,7 +9527,6 @@ __metadata: json-rules-engine: ^6.1.2 lodash: ^4.17.21 luxon: ^3.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -9591,7 +9559,6 @@ __metadata: supertest: ^6.1.3 uuid: ^9.0.0 wait-for-expect: ^3.0.2 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -9619,7 +9586,6 @@ __metadata: "@backstage/types": "workspace:^" "@types/luxon": ^3.0.0 luxon: ^3.0.0 - winston: ^3.2.1 languageName: unknown linkType: soft @@ -9912,7 +9878,6 @@ __metadata: express: ^4.17.1 leasot: ^12.0.0 supertest: ^6.1.3 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -12091,7 +12056,6 @@ __metadata: express-promise-router: ^4.1.0 supertest: ^6.1.6 uuid: ^9.0.0 - winston: ^3.2.1 yn: ^4.0.0 languageName: unknown linkType: soft @@ -45965,7 +45929,7 @@ __metadata: languageName: node linkType: hard -"winston@npm:^3.2.1": +"winston@npm:^3.13.0, winston@npm:^3.2.1": version: 3.13.0 resolution: "winston@npm:3.13.0" dependencies: