logologo
Inizio
Guida
Sviluppo
Plugin
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Inizio
Guida
Sviluppo
Plugin
API
logologo

Avvio Rapido

Panoramica Sviluppo Plugin
Scrivere il Primo Plugin
Struttura Directory Progetto

Sviluppo Server-side

Panoramica
Plugin
Collezioni (Tabelle Dati)
Operazioni Database
Gestione Origini Dati (DataSourceManager)
Gestione Risorse (ResourceManager)
Controllo Accessi (ACL)
Middleware
Cache
Eventi
Contesto Richiesta
Script di Migrazione
Logger
Internazionalizzazione (I18n)
Comando
Gestione Cron Job
Test

Sviluppo Client-side

Panoramica
Plugin
Contesto
Router
Controllo Accessi (ACL)
Gestione Origini Dati (DataSourceManager)
Risorse
Richieste
Stili e Temi
Logger
Internazionalizzazione (I18n)
Test

Altro

Guida all'Aggiornamento Plugin
Elenco Lingue
Gestione Dipendenze
Build
Previous PageStili e Temi
Next PageInternazionalizzazione (I18n)
Avviso di traduzione IA

Questa documentazione è stata tradotta automaticamente dall'IA.

#Logger

NocoBase Le offre un sistema di logging ad alte prestazioni basato su pino. Ovunque Lei abbia accesso a un context, può ottenere un'istanza del logger tramite ctx.logger per registrare i log chiave durante l'esecuzione di un plugin o del sistema.

#Utilizzo di Base

// Registra errori fatali (es. fallimento dell'inizializzazione)
ctx.logger.fatal('Application initialization failed', { error });

// Registra errori generici (es. errori nelle richieste API)
ctx.logger.error('Data loading failed', { status, message });

// Registra avvisi (es. rischi di performance o operazioni utente anomale)
ctx.logger.warn('Current form contains unsaved changes');

// Registra informazioni generali di runtime (es. componente caricato)
ctx.logger.info('User profile component loaded');

// Registra informazioni di debug (es. cambiamenti di stato)
ctx.logger.debug('Current user state', { user });

// Registra informazioni di traccia dettagliate (es. flusso di rendering)
ctx.logger.trace('Component rendered', { component: 'UserProfile' });

Questi metodi corrispondono a diversi livelli di log (dal più alto al più basso):

LivelloMetodoDescrizione
fatalctx.logger.fatal()Errori fatali, che di solito causano l'uscita del programma
errorctx.logger.error()Log di errore, che indicano il fallimento di una richiesta o operazione
warnctx.logger.warn()Informazioni di avviso, che segnalano potenziali rischi o situazioni inattese
infoctx.logger.info()Informazioni di runtime regolari
debugctx.logger.debug()Informazioni di debug per l'ambiente di sviluppo
tracectx.logger.trace()Informazioni di traccia dettagliate, solitamente per diagnosi approfondite

#Formato dei Log

Ogni output di log è in formato JSON strutturato e contiene i seguenti campi per impostazione predefinita:

CampoTipoDescrizione
levelnumberLivello del log
timenumberTimestamp (millisecondi)
pidnumberID processo
hostnamestringNome host
msgstringMessaggio del log
AltriobjectInformazioni di contesto personalizzate

Esempio di output:

{
  "level": 30,
  "time": 1730540153064,
  "pid": 12765,
  "hostname": "nocobase.local",
  "msg": "HelloModel rendered",
  "a": "a"
}

#Binding del Contesto

ctx.logger inietta automaticamente le informazioni di contesto, come il plugin corrente, il modulo o la fonte della richiesta, consentendo ai log di tracciare l'origine in modo più accurato.

plugin.context.logger.info('Plugin initialized');
model.context.logger.error('Model validation failed', { model: 'User' });

Esempio di output (con contesto):

{
  "level": 30,
  "msg": "Plugin initialized",
  "plugin": "plugin-audit-trail"
}

#Logger Personalizzato

Può creare istanze di logger personalizzate nei plugin, ereditando o estendendo le configurazioni predefinite:

const logger = ctx.logger.child({ module: 'MyPlugin' });
logger.info('Submodule started');

I logger figli ereditano la configurazione del logger principale e allegano automaticamente il contesto.

#Gerarchia dei Livelli di Log

I livelli di log di Pino seguono una definizione numerica dal più alto al più basso, dove numeri più piccoli indicano una priorità inferiore.
Di seguito è riportata la tabella completa della gerarchia dei livelli di log:

Nome LivelloValoreNome MetodoDescrizione
fatal60logger.fatal()Errori fatali, che di solito impediscono al programma di continuare l'esecuzione
error50logger.error()Errori generici, che indicano il fallimento di una richiesta o eccezioni operative
warn40logger.warn()Informazioni di avviso, che segnalano potenziali rischi o situazioni inattese
info30logger.info()Informazioni generali, che registrano lo stato del sistema o operazioni normali
debug20logger.debug()Informazioni di debug per l'analisi dei problemi in fase di sviluppo
trace10logger.trace()Informazioni di traccia dettagliate per una diagnosi approfondita
silent-Infinity(nessun metodo corrispondente)Disattiva tutti gli output di log

Pino emette solo i log con un livello maggiore o uguale alla configurazione level attuale. Ad esempio, quando il livello di log è info, i log di debug e trace verranno ignorati.

#Best Practice nello Sviluppo di Plugin

  1. Utilizzi il Logger di Contesto
    Utilizzi ctx.logger nei contesti di plugin, modello o applicazione per includere automaticamente le informazioni sull'origine.

  2. Distingua i Livelli di Log

    • Utilizzi error per registrare eccezioni di business
    • Utilizzi info per registrare cambiamenti di stato
    • Utilizzi debug per registrare informazioni di debug per lo sviluppo
  3. Eviti il Logging Eccessivo
    Soprattutto ai livelli debug e trace, Le consigliamo di abilitarli solo negli ambienti di sviluppo.

  4. Utilizzi Dati Strutturati
    Passi parametri oggetto invece di concatenare stringhe; questo aiuta nell'analisi e nel filtraggio dei log.

Seguendo queste pratiche, gli sviluppatori possono tracciare in modo più efficiente l'esecuzione dei plugin, risolvere i problemi e mantenere un sistema di logging strutturato ed estensibile.