Logging & Utils

ConsoleLogger

Logger di default basato su console.* — implementazione standard di ILogger usata dal package quando non viene iniettato un logger custom.

Cos'è

ConsoleLogger è il logger di default del package: implementa l'interfaccia ILogger inoltrando ogni chiamata ai corrispondenti metodi di console. Viene utilizzato automaticamente da PostgRESTClient, BasePostgrestService, PostgrestMfeService e BaseMfePostgrestService quando non si fornisce un'implementazione personalizzata.

Signature

class ConsoleLogger implements ILogger {
  debug(message: string, ...args: unknown[]): void
  warn(message: string, ...args: unknown[]): void
  error(message: string, ...args: unknown[]): void
}

Tutti i metodi sono pass-through di console.debug, console.warn, console.error con la stessa firma variadica.

API

MetodoInoltra aNote
debug(message, ...args)console.debugTracce di sviluppo (cache hit/miss, URL costruiti, header ricevuti)
warn(message, ...args)console.warnFiltri ignorati (parametri riservati PostgREST), fallback cache, deprecation
error(message, ...args)console.errorErrori di rete, errori PostgREST con codici SQLSTATE, eccezioni in handler

Quando usarlo

  • Sviluppo locale — output immediato nella DevTools console del browser o sul terminale Node.
  • Default acceptable — la maggior parte dei progetti PZeta non richiede setup esplicito: il package istanzia ConsoleLogger automaticamente.
  • Test interattivi — utile per debuggare query e cache durante lo sviluppo di service di dominio.

Esempio di iniezione esplicita

import { PostgRESTClient, ConsoleLogger } from '@pzeta/postgrest'

const client = new PostgRESTClient({
  apiUrl: 'https://api.example.com',
  schema: 'public',
  logger: new ConsoleLogger(),
})

Override per logger custom

Per integrare un logger applicativo (Pino, Winston, @pzeta/log, Sentry, ecc.) implementa ILogger:

import type { ILogger } from '@pzeta/postgrest'
import { logger as pinoLogger } from './logger'

class PinoAdapter implements ILogger {
  debug(message: string, ...args: unknown[]): void {
    pinoLogger.debug({ args }, message)
  }
  warn(message: string, ...args: unknown[]): void {
    pinoLogger.warn({ args }, message)
  }
  error(message: string, ...args: unknown[]): void {
    pinoLogger.error({ args }, message)
  }
}

const client = new PostgRESTClient({
  apiUrl: 'https://api.example.com',
  logger: new PinoAdapter(),
})
In contesti microservizi è consigliato wrappare il logger con un AsyncLocalStorage o context che propaga il correlationId su ogni log emesso dalla libreria.

Tipi correlati