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

Snelstart

Overzicht plug-inontwikkeling
Eerste plug-in schrijven
Projectstructuur

Server-side ontwikkeling

Overzicht
Plug-in
Collecties
Database
DataSourceManager
ResourceManager
ACL
Middleware
Cache
Events
Context
Migratie
Logger
I18n
Commando
CronJobManager
Test

Client-side ontwikkeling

Overzicht
Plug-in
Context
Router
ACL
DataSourceManager
Resource
Request
Stijlen & Thema's
Logger
I18n
Test

Overig

Upgrade-gids voor plug-ins
Talenlijst
Dependency-beheer
Build
Previous PageStijlen & Thema's
Next PageI18n
TIP

Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie

#Logger

NocoBase biedt een krachtig loggingsysteem aan, gebaseerd op pino. Overal waar u toegang heeft tot de context, kunt u via ctx.logger een logger-instantie verkrijgen. Deze kunt u gebruiken om belangrijke logboeken vast te leggen tijdens de uitvoering van een plugin of het systeem.

#Basisgebruik

// Leg fatale fouten vast (bijv. initialisatiefout)
ctx.logger.fatal('Application initialization failed', { error });

// Leg algemene fouten vast (bijv. fout bij API-aanvraag)
ctx.logger.error('Data loading failed', { status, message });

// Leg waarschuwingen vast (bijv. prestatierisico's of onverwachte gebruikersacties)
ctx.logger.warn('Current form contains unsaved changes');

// Leg algemene runtime-informatie vast (bijv. component geladen)
ctx.logger.info('User profile component loaded');

// Leg debug-informatie vast (bijv. statuswijzigingen)
ctx.logger.debug('Current user state', { user });

// Leg gedetailleerde trace-informatie vast (bijv. renderproces)
ctx.logger.trace('Component rendered', { component: 'UserProfile' });

Deze methoden komen overeen met verschillende logniveaus (van hoog naar laag):

NiveauMethodeBeschrijving
fatalctx.logger.fatal()Fatale fouten, leiden meestal tot het afsluiten van het programma
errorctx.logger.error()Foutlogboeken, duiden op een mislukte aanvraag of bewerking
warnctx.logger.warn()Waarschuwingsinformatie, wijst op potentiële risico's of onverwachte situaties
infoctx.logger.info()Reguliere runtime-informatie
debugctx.logger.debug()Debug-informatie voor de ontwikkelomgeving
tracectx.logger.trace()Gedetailleerde trace-informatie, meestal voor diepgaande diagnose

#Logformaat

Elke loguitvoer heeft een gestructureerd JSON-formaat en bevat standaard de volgende velden:

VeldTypeBeschrijving
levelnumberLogniveau
timenumberTijdstempel (milliseconden)
pidnumberProces-ID
hostnamestringHostnaam
msgstringLogbericht
OverigobjectAangepaste contextinformatie

Voorbeeld van uitvoer:

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

#Contextbinding

ctx.logger injecteert automatisch contextinformatie, zoals de huidige plugin, module of aanvraagbron, waardoor logboeken nauwkeuriger naar hun bron kunnen worden herleid.

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

Voorbeeld van uitvoer (met context):

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

#Aangepaste logger

U kunt in uw plugin aangepaste logger-instanties aanmaken, die de standaardconfiguratie overerven of uitbreiden:

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

Sub-loggers erven de configuratie van de hoofdlogger over en voegen automatisch context toe.

#Hiërarchie van logniveaus

De logniveaus van Pino volgen een numerieke definitie van hoog naar laag, waarbij kleinere getallen een lagere prioriteit aangeven. Hieronder vindt u de complete hiërarchie van logniveaus:

Niveau naamWaardeMethode naamBeschrijving
fatal60logger.fatal()Fatale fouten, waardoor het programma meestal niet verder kan worden uitgevoerd
error50logger.error()Algemene fouten, duiden op een mislukte aanvraag of uitzonderlijke bewerking
warn40logger.warn()Waarschuwingsinformatie, wijst op potentiële risico's of onverwachte situaties
info30logger.info()Algemene informatie, registreert de systeemstatus of normale bewerkingen
debug20logger.debug()Debug-informatie, voor probleemanalyse tijdens de ontwikkelingsfase
trace10logger.trace()Gedetailleerde trace-informatie, voor diepgaande diagnose
silent-Infinity(geen corresponderende methode)Schakelt alle loguitvoer uit

Pino geeft alleen logboeken weer die groter zijn dan of gelijk zijn aan de huidige level-configuratie. Als het logniveau bijvoorbeeld info is, worden debug- en trace-logboeken genegeerd.

#Best practices bij de ontwikkeling van plugins

  1. Gebruik de contextlogger Gebruik ctx.logger in de context van een plugin, model of applicatie om automatisch broninformatie mee te sturen.

  2. Onderscheid logniveaus

    • Gebruik error om bedrijfsuitvoeringen vast te leggen
    • Gebruik info om statuswijzigingen vast te leggen
    • Gebruik debug om debug-informatie voor ontwikkeling vast te leggen
  3. Vermijd overmatige logging Vooral op debug- en trace-niveaus wordt aanbevolen deze alleen in ontwikkelomgevingen in te schakelen.

  4. Gebruik gestructureerde gegevens Geef objectparameters door in plaats van strings samen te voegen; dit helpt bij loganalyse en -filtering.

Door deze methoden te volgen, kunnen ontwikkelaars efficiënter de uitvoering van plugins volgen, problemen oplossen en de structuur en uitbreidbaarheid van het loggingsysteem behouden.