diff --git a/packages/pockethost/src/common/ConsoleLogger.ts b/packages/pockethost/src/common/ConsoleLogger.ts index 192475ad..ca3c46ef 100644 --- a/packages/pockethost/src/common/ConsoleLogger.ts +++ b/packages/pockethost/src/common/ConsoleLogger.ts @@ -11,58 +11,59 @@ const CONSOLE_METHODS = { } export function ConsoleLogger(initialConfig: Partial = {}): Logger { - let config: LoggerConfig = { + const config: LoggerConfig = { level: LogLevelName.Info, - pfx: [], breadcrumbs: [], context: {}, ...initialConfig, } + const { breadcrumbs, context } = config + function log(level: LogLevelName, args: any[]) { if (isLevelGte(level, config.level)) { - const prefix = config.pfx.length > 0 ? `[${config.pfx.join(':')}] ` : '' - CONSOLE_METHODS[level](`${prefix}${level.toUpperCase()}:`, ...args) + CONSOLE_METHODS[level](`[${level.toUpperCase()}]`, ...withBreadcrumbs(args)) } } - const breadcrumbs: string[] = [] - const context: Record = {} const withBreadcrumbs = (args: any[]) => { return [breadcrumbs.map((b) => `[${b}]`).join(' '), ...args] } const logger: Logger = { raw(...args: any[]) { - log(LogLevelName.Raw, withBreadcrumbs(args)) + log(LogLevelName.Raw, args) }, trace(...args: any[]) { - log(LogLevelName.Trace, withBreadcrumbs(args)) + log(LogLevelName.Trace, args) }, debug(...args: any[]) { - log(LogLevelName.Debug, withBreadcrumbs(args)) + log(LogLevelName.Debug, args) }, dbg(...args: any[]) { logger.debug(...args) }, info(...args: any[]) { - log(LogLevelName.Info, withBreadcrumbs(args)) + log(LogLevelName.Info, args) }, warn(...args: any[]) { - log(LogLevelName.Warn, withBreadcrumbs(args)) + log(LogLevelName.Warn, args) }, error(...args: any[]) { - log(LogLevelName.Error, withBreadcrumbs(args)) + log(LogLevelName.Error, args) }, criticalError(...args: any[]) { - logger.error('CRITICAL:', withBreadcrumbs(args)) + logger.error('CRITICAL:', args) }, create(name: string, configOverride?: Partial): Logger { + const newBreadcrumbs = [...breadcrumbs] + if (!newBreadcrumbs.includes(name)) { + newBreadcrumbs.push(name) + } const newConfig = { ...config, - breadcrumbs: [...breadcrumbs, name], + breadcrumbs: newBreadcrumbs, context: { ...context }, - pfx: [...config.pfx, name], logger: logger, ...configOverride, } @@ -72,7 +73,9 @@ export function ConsoleLogger(initialConfig: Partial = {}): Logger return logger.create(name) }, breadcrumb(s: string): Logger { - breadcrumbs.push(s) + if (!breadcrumbs.includes(s)) { + breadcrumbs.push(s) + } return logger }, context(name: string | object, value?: string | number): Logger { diff --git a/packages/pockethost/src/common/Logger.ts b/packages/pockethost/src/common/Logger.ts index b9518f03..aae6beff 100644 --- a/packages/pockethost/src/common/Logger.ts +++ b/packages/pockethost/src/common/Logger.ts @@ -3,7 +3,6 @@ import { ConsoleLogger } from './ConsoleLogger' export type LoggerConfig = { level: LogLevelName - pfx: string[] breadcrumbs: string[] context: Record }