UNPKG

@adonisjs/logger

Version:

Logger built on top of pino to be used by AdonisJs

130 lines (129 loc) 4.53 kB
import type { LevelWithSilent, Logger as PinoLogger } from 'pino'; import type { LoggerConfig, LevelMapping, Bindings, ChildLoggerOptions } from './types.js'; /** * 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 desintation stream. With pino, you * pass is at 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, desintation: pino.destination(2) }) * logger.error('something went wrong') * ``` */ export declare class Logger<Config extends LoggerConfig = LoggerConfig> { protected config: Config; pino: PinoLogger<string>; constructor(config: Config, pino?: PinoLogger<string>); /** * Check if the logger is enabled */ get isEnabled(): boolean | undefined; /** * A map of levels */ get levels(): LevelMapping; /** * Returns the current logger level */ get level(): string; /** * Update logger level */ set level(level: string); /** * Returns the current logger level number */ get levelNumber(): number; /** * Returns the pino version */ get pinoVersion(): string; /** * Returns the pino version */ get version(): string; /** * Returns a boolean telling if level is enabled or * not. */ 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) * }) * ``` */ ifLevelEnabled(level: string, callback: (logger: this) => Promise<void>): Promise<void>; ifLevelEnabled(level: string, callback: (logger: this) => void): void; /** * Log message for any named level */ log(level: LevelWithSilent | keyof Config['customLevels'], message: string, ...values: any[]): void; log(level: LevelWithSilent | keyof Config['customLevels'], mergingObject: any, message: string, ...values: any[]): void; /** * Log message at trace level */ trace<T extends object>(obj: T, message?: string, ...values: any[]): void; trace(obj: unknown, message?: string, ...values: any[]): void; trace(message: string, ...values: any[]): void; /** * Log message at debug level */ debug<T extends object>(obj: T, message?: string, ...values: any[]): void; debug(obj: unknown, message?: string, ...values: any[]): void; debug(message: string, ...values: any[]): void; /** * Log message at info level */ info<T extends object>(obj: T, message?: string, ...values: any[]): void; info(obj: unknown, message?: string, ...values: any[]): void; info(message: string, ...values: any[]): void; /** * Log message at warn level */ warn<T extends object>(obj: T, message?: string, ...values: any[]): void; warn(obj: unknown, message?: string, ...values: any[]): void; warn(message: string, ...values: any[]): void; /** * Log message at error level */ error<T extends object>(obj: T, message?: string, ...values: any[]): void; error(obj: unknown, message?: string, ...values: any[]): void; error(message: string, ...values: any[]): void; /** * Log message at fatal level */ fatal<T extends object>(obj: T, message?: string, ...values: any[]): void; fatal(obj: unknown, message?: string, ...values: any[]): void; fatal(message: string, ...values: any[]): void; /** * Log message at silent level */ silent<T extends object>(obj: T, message?: string, ...values: any[]): void; silent(obj: unknown, message?: string, ...values: any[]): void; silent(message: string, ...values: any[]): void; /** * Returns a child logger instance */ child<ChildOptions extends ChildLoggerOptions>(bindings: Bindings, options?: ChildOptions): Logger<Config>; /** * Returns default bindings for the logger */ bindings(): Bindings; }