backend-plugin-api: update old LogMeta to use JsonObject instead

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2023-02-07 11:43:08 +01:00
parent 7e7557a2be
commit c769924e85
7 changed files with 39 additions and 44 deletions
+1 -1
View File
@@ -2,4 +2,4 @@
'@backstage/backend-plugin-api': minor
---
**BREAKING**: Inlined `LogMeta` type.
**BREAKING**: Switched out `LogMeta` type for `JsonObject`.
+7 -6
View File
@@ -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<string>): void;
// (undocumented)
child(meta: Record<string, unknown>): LoggerService;
child(meta: JsonObject): LoggerService;
static colorFormat(): Format;
static create(options: WinstonLoggerOptions): WinstonLogger;
// (undocumented)
debug(message: string, meta?: Record<string, unknown>): void;
debug(message: string, meta?: JsonObject): void;
// (undocumented)
error(message: string, meta?: Record<string, unknown>): void;
error(message: string, meta?: JsonObject): void;
// (undocumented)
info(message: string, meta?: Record<string, unknown>): void;
info(message: string, meta?: JsonObject): void;
static redacter(): {
format: Format;
add: (redactions: Iterable<string>) => void;
};
// (undocumented)
warn(message: string, meta?: Record<string, unknown>): void;
warn(message: string, meta?: JsonObject): void;
}
// @public (undocumented)
@@ -286,7 +287,7 @@ export interface WinstonLoggerOptions {
// (undocumented)
level: string;
// (undocumented)
meta?: Record<string, unknown>;
meta?: JsonObject;
// (undocumented)
transports: transport[];
}
@@ -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<string, unknown>;
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<string, unknown>): void {
error(message: string, meta?: JsonObject): void {
this.#winston.error(message, meta);
}
warn(message: string, meta?: Record<string, unknown>): void {
warn(message: string, meta?: JsonObject): void {
this.#winston.warn(message, meta);
}
info(message: string, meta?: Record<string, unknown>): void {
info(message: string, meta?: JsonObject): void {
this.#winston.info(message, meta);
}
debug(message: string, meta?: Record<string, unknown>): void {
debug(message: string, meta?: JsonObject): void {
this.#winston.debug(message, meta);
}
child(meta: Record<string, unknown>): LoggerService {
child(meta: JsonObject): LoggerService {
return new WinstonLogger(this.#winston.child(meta));
}
@@ -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);
+6 -5
View File
@@ -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<string, unknown>): LoggerService;
child(meta: JsonObject): LoggerService;
// (undocumented)
debug(message: string, meta?: Error | Record<string, unknown>): void;
debug(message: string, meta?: Error | JsonObject): void;
// (undocumented)
error(message: string, meta?: Error | Record<string, unknown>): void;
error(message: string, meta?: Error | JsonObject): void;
// (undocumented)
info(message: string, meta?: Error | Record<string, unknown>): void;
info(message: string, meta?: Error | JsonObject): void;
// (undocumented)
warn(message: string, meta?: Error | Record<string, unknown>): void;
warn(message: string, meta?: Error | JsonObject): void;
}
// @public (undocumented)
@@ -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<string, unknown>): void;
warn(message: string, meta?: Error | Record<string, unknown>): void;
info(message: string, meta?: Error | Record<string, unknown>): void;
debug(message: string, meta?: Error | Record<string, unknown>): 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<string, unknown>): LoggerService;
child(meta: JsonObject): LoggerService;
}
@@ -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<string, unknown>;
#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<string, unknown> | Error | undefined,
): void {
error(message: string, meta?: JsonObject | Error | undefined): void {
this.#log('error', message, meta);
}
warn(
message: string,
meta?: Record<string, unknown> | Error | undefined,
): void {
warn(message: string, meta?: JsonObject | Error | undefined): void {
this.#log('warn', message, meta);
}
info(
message: string,
meta?: Record<string, unknown> | Error | undefined,
): void {
info(message: string, meta?: JsonObject | Error | undefined): void {
this.#log('info', message, meta);
}
debug(
message: string,
meta?: Record<string, unknown> | Error | undefined,
): void {
debug(message: string, meta?: JsonObject | Error | undefined): void {
this.#log('debug', message, meta);
}
child(meta: Record<string, unknown>): LoggerService {
child(meta: JsonObject): LoggerService {
return new MockRootLoggerService(this.#level, { ...this.#meta, ...meta });
}
private constructor(level: number, meta: Record<string, unknown>) {
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<string, unknown> | Error | undefined,
meta?: JsonObject | Error | undefined,
) {
const levelValue = levels[level] ?? 0;
if (levelValue <= this.#level) {