import Logger from 'bunyan'; import type { Logger as WpLogger, LoggerFactory } from '@webpieces/core-util'; /** * BunyanFactoryBase - shared plumbing for the bunyan {@link LoggerFactory} * backends. Builds ONE underlying bunyan logger with the caller-chosen stream, * then hands out a cached {@link BunyanLogger} per name (each a bunyan child * carrying `loggerName`). Every logger reads the magic context DIRECTLY from * RequestContext (including the build `version`), so nothing is threaded through here. Subclasses * differ only in the stream they pass up (GCP vs local console). * * Per-logger names ride as `loggerName` on each child rather than `name`, because * bunyan REFUSES to let a child override `name` (`invalid options.name: child cannot * set logger name`). */ export declare abstract class BunyanFactoryBase implements LoggerFactory { private readonly base; private readonly loggers; protected constructor(streams: Logger.Stream[]); getLogger(name: string): WpLogger; }