From c769924e856cdf815b3193222611f2e578caa39e Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Tue, 7 Feb 2023 11:43:08 +0100 Subject: [PATCH] backend-plugin-api: update old LogMeta to use JsonObject instead Signed-off-by: Patrik Oldsberg --- .changeset/selfish-frogs-punch.md | 2 +- packages/backend-app-api/api-report.md | 13 +++++---- .../src/logging/WinstonLogger.ts | 13 +++++---- .../src/logging/loggerToWinstonLogger.ts | 3 +- packages/backend-plugin-api/api-report.md | 11 +++---- .../src/services/definitions/LoggerService.ts | 12 ++++---- .../next/services/MockRootLoggerService.ts | 29 ++++++------------- 7 files changed, 39 insertions(+), 44 deletions(-) diff --git a/.changeset/selfish-frogs-punch.md b/.changeset/selfish-frogs-punch.md index 9dedd3544d..6484576af8 100644 --- a/.changeset/selfish-frogs-punch.md +++ b/.changeset/selfish-frogs-punch.md @@ -2,4 +2,4 @@ '@backstage/backend-plugin-api': minor --- -**BREAKING**: Inlined `LogMeta` type. +**BREAKING**: Switched out `LogMeta` type for `JsonObject`. diff --git a/packages/backend-app-api/api-report.md b/packages/backend-app-api/api-report.md index 67da4cb018..b7670747e4 100644 --- a/packages/backend-app-api/api-report.md +++ b/packages/backend-app-api/api-report.md @@ -18,6 +18,7 @@ import { HelmetOptions } from 'helmet'; import * as http from 'http'; import { HttpRouterService } from '@backstage/backend-plugin-api'; import { IdentityService } from '@backstage/backend-plugin-api'; +import { JsonObject } from '@backstage/types'; import { LifecycleService } from '@backstage/backend-plugin-api'; import { LoadConfigOptionsRemote } from '@backstage/config-loader'; import { LoggerService } from '@backstage/backend-plugin-api'; @@ -262,21 +263,21 @@ export class WinstonLogger implements RootLoggerService { // (undocumented) addRedactions(redactions: Iterable): void; // (undocumented) - child(meta: Record): LoggerService; + child(meta: JsonObject): LoggerService; static colorFormat(): Format; static create(options: WinstonLoggerOptions): WinstonLogger; // (undocumented) - debug(message: string, meta?: Record): void; + debug(message: string, meta?: JsonObject): void; // (undocumented) - error(message: string, meta?: Record): void; + error(message: string, meta?: JsonObject): void; // (undocumented) - info(message: string, meta?: Record): void; + info(message: string, meta?: JsonObject): void; static redacter(): { format: Format; add: (redactions: Iterable) => void; }; // (undocumented) - warn(message: string, meta?: Record): void; + warn(message: string, meta?: JsonObject): void; } // @public (undocumented) @@ -286,7 +287,7 @@ export interface WinstonLoggerOptions { // (undocumented) level: string; // (undocumented) - meta?: Record; + meta?: JsonObject; // (undocumented) transports: transport[]; } diff --git a/packages/backend-app-api/src/logging/WinstonLogger.ts b/packages/backend-app-api/src/logging/WinstonLogger.ts index 8d48015580..06a189508b 100644 --- a/packages/backend-app-api/src/logging/WinstonLogger.ts +++ b/packages/backend-app-api/src/logging/WinstonLogger.ts @@ -18,6 +18,7 @@ import { LoggerService, RootLoggerService, } from '@backstage/backend-plugin-api'; +import { JsonObject } from '@backstage/types'; import { Format, TransformableInfo } from 'logform'; import { Logger, @@ -32,7 +33,7 @@ import { escapeRegExp } from '../lib/escapeRegExp'; * @public */ export interface WinstonLoggerOptions { - meta?: Record; + meta?: JsonObject; level: string; format: Format; transports: Transport[]; @@ -149,23 +150,23 @@ export class WinstonLogger implements RootLoggerService { this.#addRedactions = addRedactions; } - error(message: string, meta?: Record): void { + error(message: string, meta?: JsonObject): void { this.#winston.error(message, meta); } - warn(message: string, meta?: Record): void { + warn(message: string, meta?: JsonObject): void { this.#winston.warn(message, meta); } - info(message: string, meta?: Record): void { + info(message: string, meta?: JsonObject): void { this.#winston.info(message, meta); } - debug(message: string, meta?: Record): void { + debug(message: string, meta?: JsonObject): void { this.#winston.debug(message, meta); } - child(meta: Record): LoggerService { + child(meta: JsonObject): LoggerService { return new WinstonLogger(this.#winston.child(meta)); } diff --git a/packages/backend-common/src/logging/loggerToWinstonLogger.ts b/packages/backend-common/src/logging/loggerToWinstonLogger.ts index f15bd5be81..4ba88358d2 100644 --- a/packages/backend-common/src/logging/loggerToWinstonLogger.ts +++ b/packages/backend-common/src/logging/loggerToWinstonLogger.ts @@ -15,6 +15,7 @@ */ import { LoggerService } from '@backstage/backend-plugin-api'; +import { JsonObject } from '@backstage/types'; import { Logger as WinstonLogger, createLogger } from 'winston'; import Transport, { TransportStreamOptions } from 'winston-transport'; @@ -31,7 +32,7 @@ class BackstageLoggerTransport extends Transport { callback(); return; } - const { level, message, ...meta } = info as { [name: string]: unknown }; + const { level, message, ...meta } = info as JsonObject; switch (level) { case 'error': this.backstageLogger.error(String(message), meta); diff --git a/packages/backend-plugin-api/api-report.md b/packages/backend-plugin-api/api-report.md index e0b8fdfa04..3ad972020d 100644 --- a/packages/backend-plugin-api/api-report.md +++ b/packages/backend-plugin-api/api-report.md @@ -8,6 +8,7 @@ import { Config } from '@backstage/config'; import { Handler } from 'express'; import { IdentityApi } from '@backstage/plugin-auth-node'; +import { JsonObject } from '@backstage/types'; import { JsonValue } from '@backstage/types'; import { Knex } from 'knex'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; @@ -311,15 +312,15 @@ export interface LifecycleServiceShutdownOptions { // @public export interface LoggerService { // (undocumented) - child(meta: Record): LoggerService; + child(meta: JsonObject): LoggerService; // (undocumented) - debug(message: string, meta?: Error | Record): void; + debug(message: string, meta?: Error | JsonObject): void; // (undocumented) - error(message: string, meta?: Error | Record): void; + error(message: string, meta?: Error | JsonObject): void; // (undocumented) - info(message: string, meta?: Error | Record): void; + info(message: string, meta?: Error | JsonObject): void; // (undocumented) - warn(message: string, meta?: Error | Record): void; + warn(message: string, meta?: Error | JsonObject): void; } // @public (undocumented) diff --git a/packages/backend-plugin-api/src/services/definitions/LoggerService.ts b/packages/backend-plugin-api/src/services/definitions/LoggerService.ts index ce59b47007..2e4edc60be 100644 --- a/packages/backend-plugin-api/src/services/definitions/LoggerService.ts +++ b/packages/backend-plugin-api/src/services/definitions/LoggerService.ts @@ -14,16 +14,18 @@ * limitations under the License. */ +import { JsonObject } from '@backstage/types'; + /** * A service that provides a logging facility. * * @public */ export interface LoggerService { - error(message: string, meta?: Error | Record): void; - warn(message: string, meta?: Error | Record): void; - info(message: string, meta?: Error | Record): void; - debug(message: string, meta?: Error | Record): void; + error(message: string, meta?: Error | JsonObject): void; + warn(message: string, meta?: Error | JsonObject): void; + info(message: string, meta?: Error | JsonObject): void; + debug(message: string, meta?: Error | JsonObject): void; - child(meta: Record): LoggerService; + child(meta: JsonObject): LoggerService; } diff --git a/packages/backend-test-utils/src/next/services/MockRootLoggerService.ts b/packages/backend-test-utils/src/next/services/MockRootLoggerService.ts index fabba82a0f..8b973eeeab 100644 --- a/packages/backend-test-utils/src/next/services/MockRootLoggerService.ts +++ b/packages/backend-test-utils/src/next/services/MockRootLoggerService.ts @@ -18,6 +18,7 @@ import { LoggerService, RootLoggerService, } from '@backstage/backend-plugin-api'; +import { JsonObject } from '@backstage/types'; import type { mockServices } from './mockServices'; const levels = { @@ -30,7 +31,7 @@ const levels = { export class MockRootLoggerService implements RootLoggerService { #level: number; - #meta: Record; + #meta: JsonObject; static create( options?: mockServices.rootLogger.Options, @@ -42,39 +43,27 @@ export class MockRootLoggerService implements RootLoggerService { return new MockRootLoggerService(levels[level], {}); } - error( - message: string, - meta?: Record | Error | undefined, - ): void { + error(message: string, meta?: JsonObject | Error | undefined): void { this.#log('error', message, meta); } - warn( - message: string, - meta?: Record | Error | undefined, - ): void { + warn(message: string, meta?: JsonObject | Error | undefined): void { this.#log('warn', message, meta); } - info( - message: string, - meta?: Record | Error | undefined, - ): void { + info(message: string, meta?: JsonObject | Error | undefined): void { this.#log('info', message, meta); } - debug( - message: string, - meta?: Record | Error | undefined, - ): void { + debug(message: string, meta?: JsonObject | Error | undefined): void { this.#log('debug', message, meta); } - child(meta: Record): LoggerService { + child(meta: JsonObject): LoggerService { return new MockRootLoggerService(this.#level, { ...this.#meta, ...meta }); } - private constructor(level: number, meta: Record) { + private constructor(level: number, meta: JsonObject) { this.#level = level; this.#meta = meta; } @@ -82,7 +71,7 @@ export class MockRootLoggerService implements RootLoggerService { #log( level: 'error' | 'warn' | 'info' | 'debug', message: string, - meta?: Record | Error | undefined, + meta?: JsonObject | Error | undefined, ) { const levelValue = levels[level] ?? 0; if (levelValue <= this.#level) {