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 {
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<string, string | number | undefined> = {}
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<LoggerConfig>): 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<LoggerConfig> = {}): Logger
return logger.create(name)
},
breadcrumb(s: string): Logger {
if (!breadcrumbs.includes(s)) {
breadcrumbs.push(s)
}
return logger
},
context(name: string | object, value?: string | number): Logger {

View File

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