From ccf79e1b6a3009649513aa822bc42a54d4e6625d Mon Sep 17 00:00:00 2001 From: Codby <87335804+TheCodby@users.noreply.github.com> Date: Sat, 29 Jul 2023 06:52:55 +0300 Subject: [PATCH 1/2] feat(core): added "fatal" as a log level (issue #11945) --- .../common/services/console-logger.service.ts | 20 +++++++++++++ packages/common/services/logger.service.ts | 30 ++++++++++++++++++- .../utils/is-log-level-enabled.util.ts | 1 + .../core/injector/helpers/silent-logger.ts | 1 + 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/packages/common/services/console-logger.service.ts b/packages/common/services/console-logger.service.ts index 3642180a8d2..9e7b6c79e10 100644 --- a/packages/common/services/console-logger.service.ts +++ b/packages/common/services/console-logger.service.ts @@ -26,6 +26,7 @@ const DEFAULT_LOG_LEVELS: LogLevel[] = [ 'warn', 'debug', 'verbose', + 'fatal', ]; const dateTimeFormatter = new Intl.DateTimeFormat(undefined, { @@ -145,6 +146,23 @@ export class ConsoleLogger implements LoggerService { this.printMessages(messages, context, 'verbose'); } + /** + * Write a 'fatal' level log, if the configured level allows for it. + * Prints to `stdout` with newline. + */ + fatal(message: any, context?: string): void; + fatal(message: any, ...optionalParams: [...any, string?]): void; + fatal(message: any, ...optionalParams: any[]) { + if (!this.isLevelEnabled('fatal')) { + return; + } + const { messages, context } = this.getContextAndMessagesToPrint([ + message, + ...optionalParams, + ]); + this.printMessages(messages, context, 'fatal'); + } + /** * Set log levels * @param levels log levels @@ -330,6 +348,8 @@ export class ConsoleLogger implements LoggerService { return clc.red; case 'verbose': return clc.cyanBright; + case 'fatal': + return clc.bold; default: return clc.green; } diff --git a/packages/common/services/logger.service.ts b/packages/common/services/logger.service.ts index cdc70fa5bdf..18b4a1ca7cb 100644 --- a/packages/common/services/logger.service.ts +++ b/packages/common/services/logger.service.ts @@ -6,7 +6,7 @@ import { isLogLevelEnabled } from './utils'; /** * @publicApi */ -export type LogLevel = 'log' | 'error' | 'warn' | 'debug' | 'verbose'; +export type LogLevel = 'log' | 'error' | 'warn' | 'debug' | 'verbose' | 'fatal'; /** * @publicApi @@ -37,6 +37,11 @@ export interface LoggerService { */ verbose?(message: any, ...optionalParams: any[]): any; + /** + * Write a 'fatal' level log. + */ + fatal?(message: any, ...optionalParams: any[]): any; + /** * Set log levels. * @param levels log levels @@ -185,6 +190,19 @@ export class Logger implements LoggerService { this.localInstance?.verbose?.(message, ...optionalParams); } + /** + * Write a 'verbose' level log. + */ + fatal(message: any, context?: string): void; + fatal(message: any, ...optionalParams: [...any, string?]): void; + @Logger.WrapBuffer + fatal(message: any, ...optionalParams: any[]) { + optionalParams = this.context + ? optionalParams.concat(this.context) + : optionalParams; + this.localInstance?.fatal?.(message, ...optionalParams); + } + /** * Write an 'error' level log. */ @@ -241,6 +259,16 @@ export class Logger implements LoggerService { this.staticInstanceRef?.verbose?.(message, ...optionalParams); } + /** + * Write a 'fatal' level log. + */ + static fatal(message: any, context?: string): void; + static fatal(message: any, ...optionalParams: [...any, string?]): void; + @Logger.WrapBuffer + static fatal(message: any, ...optionalParams: any[]) { + this.staticInstanceRef?.fatal?.(message, ...optionalParams); + } + /** * Print buffered logs and detach buffer. */ diff --git a/packages/common/services/utils/is-log-level-enabled.util.ts b/packages/common/services/utils/is-log-level-enabled.util.ts index a7739704356..242dd6474a8 100644 --- a/packages/common/services/utils/is-log-level-enabled.util.ts +++ b/packages/common/services/utils/is-log-level-enabled.util.ts @@ -6,6 +6,7 @@ const LOG_LEVEL_VALUES: Record = { log: 2, warn: 3, error: 4, + fatal: 5, }; /** diff --git a/packages/core/injector/helpers/silent-logger.ts b/packages/core/injector/helpers/silent-logger.ts index 82c37d5120d..07ae0ecc48d 100644 --- a/packages/core/injector/helpers/silent-logger.ts +++ b/packages/core/injector/helpers/silent-logger.ts @@ -8,5 +8,6 @@ export class SilentLogger extends Logger { warn = noop; debug = noop; verbose = noop; + fatal = noop; setLogLevels = noop; } From 2cb5f2c89a6b6021a88f49f0fdd7116bc6a579ab Mon Sep 17 00:00:00 2001 From: Codby <87335804+TheCodby@users.noreply.github.com> Date: Sat, 29 Jul 2023 07:05:12 +0300 Subject: [PATCH 2/2] feat(common): added "fatal" as a log level (issue #11945) --- packages/common/services/logger.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/common/services/logger.service.ts b/packages/common/services/logger.service.ts index 18b4a1ca7cb..aeb808b32f9 100644 --- a/packages/common/services/logger.service.ts +++ b/packages/common/services/logger.service.ts @@ -191,7 +191,7 @@ export class Logger implements LoggerService { } /** - * Write a 'verbose' level log. + * Write a 'fatal' level log. */ fatal(message: any, context?: string): void; fatal(message: any, ...optionalParams: [...any, string?]): void;