refactor(pockethost): simplify ConsoleLogger by removing unused prefix and optimizing breadcrumb handling

This commit is contained in:
Ben Allfree 2025-07-22 02:32:42 +00:00
parent 8ec5d00df4
commit 01540dad27
2 changed files with 19 additions and 17 deletions

View File

@ -11,58 +11,59 @@ const CONSOLE_METHODS = {
} }
export function ConsoleLogger(initialConfig: Partial<LoggerConfig> = {}): Logger { export function ConsoleLogger(initialConfig: Partial<LoggerConfig> = {}): Logger {
let config: LoggerConfig = { const config: LoggerConfig = {
level: LogLevelName.Info, level: LogLevelName.Info,
pfx: [],
breadcrumbs: [], breadcrumbs: [],
context: {}, context: {},
...initialConfig, ...initialConfig,
} }
const { breadcrumbs, context } = config
function log(level: LogLevelName, args: any[]) { function log(level: LogLevelName, args: any[]) {
if (isLevelGte(level, config.level)) { if (isLevelGte(level, config.level)) {
const prefix = config.pfx.length > 0 ? `[${config.pfx.join(':')}] ` : '' CONSOLE_METHODS[level](`[${level.toUpperCase()}]`, ...withBreadcrumbs(args))
CONSOLE_METHODS[level](`${prefix}${level.toUpperCase()}:`, ...args)
} }
} }
const breadcrumbs: string[] = []
const context: Record<string, string | number | undefined> = {}
const withBreadcrumbs = (args: any[]) => { const withBreadcrumbs = (args: any[]) => {
return [breadcrumbs.map((b) => `[${b}]`).join(' '), ...args] return [breadcrumbs.map((b) => `[${b}]`).join(' '), ...args]
} }
const logger: Logger = { const logger: Logger = {
raw(...args: any[]) { raw(...args: any[]) {
log(LogLevelName.Raw, withBreadcrumbs(args)) log(LogLevelName.Raw, args)
}, },
trace(...args: any[]) { trace(...args: any[]) {
log(LogLevelName.Trace, withBreadcrumbs(args)) log(LogLevelName.Trace, args)
}, },
debug(...args: any[]) { debug(...args: any[]) {
log(LogLevelName.Debug, withBreadcrumbs(args)) log(LogLevelName.Debug, args)
}, },
dbg(...args: any[]) { dbg(...args: any[]) {
logger.debug(...args) logger.debug(...args)
}, },
info(...args: any[]) { info(...args: any[]) {
log(LogLevelName.Info, withBreadcrumbs(args)) log(LogLevelName.Info, args)
}, },
warn(...args: any[]) { warn(...args: any[]) {
log(LogLevelName.Warn, withBreadcrumbs(args)) log(LogLevelName.Warn, args)
}, },
error(...args: any[]) { error(...args: any[]) {
log(LogLevelName.Error, withBreadcrumbs(args)) log(LogLevelName.Error, args)
}, },
criticalError(...args: any[]) { criticalError(...args: any[]) {
logger.error('CRITICAL:', withBreadcrumbs(args)) logger.error('CRITICAL:', args)
}, },
create(name: string, configOverride?: Partial<LoggerConfig>): Logger { create(name: string, configOverride?: Partial<LoggerConfig>): Logger {
const newBreadcrumbs = [...breadcrumbs]
if (!newBreadcrumbs.includes(name)) {
newBreadcrumbs.push(name)
}
const newConfig = { const newConfig = {
...config, ...config,
breadcrumbs: [...breadcrumbs, name], breadcrumbs: newBreadcrumbs,
context: { ...context }, context: { ...context },
pfx: [...config.pfx, name],
logger: logger, logger: logger,
...configOverride, ...configOverride,
} }
@ -72,7 +73,9 @@ export function ConsoleLogger(initialConfig: Partial<LoggerConfig> = {}): Logger
return logger.create(name) return logger.create(name)
}, },
breadcrumb(s: string): Logger { breadcrumb(s: string): Logger {
if (!breadcrumbs.includes(s)) {
breadcrumbs.push(s) breadcrumbs.push(s)
}
return logger return logger
}, },
context(name: string | object, value?: string | number): Logger { context(name: string | object, value?: string | number): Logger {

View File

@ -3,7 +3,6 @@ import { ConsoleLogger } from './ConsoleLogger'
export type LoggerConfig = { export type LoggerConfig = {
level: LogLevelName level: LogLevelName
pfx: string[]
breadcrumbs: string[] breadcrumbs: string[]
context: Record<string, LoggerContextValue> context: Record<string, LoggerContextValue>
} }