import type { LevelWithSilent, Logger as PinoLogger } from 'pino'; import type { LoggerConfig, LevelMapping, Bindings, ChildLoggerOptions } from './types.ts'; /** * A thin wrapper on top of Pino with support for disabling the logger. * * The config is same as the options accepted by pino with following additions * * - enabled: A flag to turn off the logger. You can still use the logger API, but * nothing will be logged. * - destination: A stream to pass to pino as the destination stream. With pino, you * pass it as the 2nd argument, with Logger, you pass it as an option. * * ```ts * const logger = new Logger({ enabled: true }) * logger.info('hello world') * ``` * * ```ts * const logger = new Logger({ enabled: true, destination: pino.destination(2) }) * logger.error('something went wrong') * ``` */ export declare class Logger { protected config: Config; /** * The underlying Pino logger instance */ pino: PinoLogger; /** * Creates a new Logger instance * @param config - Logger configuration * @param pino - Optional Pino logger instance */ constructor(config: Config, pino?: PinoLogger); /** * Check if the logger is enabled * @returns True if the logger is enabled */ get isEnabled(): boolean; /** * A map of levels * @returns The level mapping object */ get levels(): LevelMapping; /** * Returns the current logger level * @returns The current log level as a string */ get level(): string; /** * Update logger level * @param level - The new log level to set */ set level(level: string); /** * Returns the current logger level number * @returns The current log level as a number */ get levelNumber(): number; /** * Returns the pino version * @returns The Pino version string */ get pinoVersion(): string; /** * Returns the pino version * @returns The Pino version string */ get version(): string; /** * Returns a boolean telling if level is enabled or not * @param level - The log level to check * @returns True if the specified level is enabled */ isLevelEnabled(level: string): boolean; /** * Run the callback when the level is enabled. Helpful for * conditionally logging, especially when the processing * of computing log data is expensive. * * ```ts * logger.ifLevelEnabled('trace', () => { * const data = inspect(someValue) * logger.info(data) * }) * ``` * @param level - The log level to check * @param callback - The callback function to execute if level is enabled */ ifLevelEnabled(level: string, callback: (logger: this) => Promise): Promise; ifLevelEnabled(level: string, callback: (logger: this) => void): void; /** * Log message for any named level * @param level - The log level to use * @param message - The log message * @param values - Additional values to log */ log(level: LevelWithSilent | keyof Config['customLevels'], message: string, ...values: any[]): void; /** * Log message for any named level with merging object * @param level - The log level to use * @param mergingObject - Object to merge with log entry * @param message - The log message * @param values - Additional values to log */ log(level: LevelWithSilent | keyof Config['customLevels'], mergingObject: any, message: string, ...values: any[]): void; /** * Log message at trace level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ trace(obj: T, message?: string, ...values: any[]): void; /** * Log message at trace level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ trace(obj: unknown, message?: string, ...values: any[]): void; /** * Log message at trace level * @param message - The log message * @param values - Additional values to log */ trace(message: string, ...values: any[]): void; /** * Log message at debug level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ debug(obj: T, message?: string, ...values: any[]): void; /** * Log message at debug level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ debug(obj: unknown, message?: string, ...values: any[]): void; /** * Log message at debug level * @param message - The log message * @param values - Additional values to log */ debug(message: string, ...values: any[]): void; /** * Log message at info level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ info(obj: T, message?: string, ...values: any[]): void; /** * Log message at info level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ info(obj: unknown, message?: string, ...values: any[]): void; /** * Log message at info level * @param message - The log message * @param values - Additional values to log */ info(message: string, ...values: any[]): void; /** * Log message at warn level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ warn(obj: T, message?: string, ...values: any[]): void; /** * Log message at warn level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ warn(obj: unknown, message?: string, ...values: any[]): void; /** * Log message at warn level * @param message - The log message * @param values - Additional values to log */ warn(message: string, ...values: any[]): void; /** * Log message at error level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ error(obj: T, message?: string, ...values: any[]): void; /** * Log message at error level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ error(obj: unknown, message?: string, ...values: any[]): void; /** * Log message at error level * @param message - The log message * @param values - Additional values to log */ error(message: string, ...values: any[]): void; /** * Log message at fatal level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ fatal(obj: T, message?: string, ...values: any[]): void; /** * Log message at fatal level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ fatal(obj: unknown, message?: string, ...values: any[]): void; /** * Log message at fatal level * @param message - The log message * @param values - Additional values to log */ fatal(message: string, ...values: any[]): void; /** * Log message at silent level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ silent(obj: T, message?: string, ...values: any[]): void; /** * Log message at silent level * @param obj - Object to log or merge * @param message - Optional log message * @param values - Additional values to log */ silent(obj: unknown, message?: string, ...values: any[]): void; /** * Log message at silent level * @param message - The log message * @param values - Additional values to log */ silent(message: string, ...values: any[]): void; /** * Returns a child logger instance * @param bindings - Bindings to add to the child logger * @param options - Optional child logger options * @returns A new child logger instance */ child(bindings: Bindings, options?: ChildOptions): Logger; /** * Returns default bindings for the logger * @returns The default bindings object */ bindings(): Bindings; }