logologo
Start
Manual
Utveckling
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
Manual
Utveckling
Plugins
API
logologo

Snabbstart

Översikt: Plugin-utveckling
Skriv ditt första plugin
Projektets katalogstruktur

Server-side-utveckling

Översikt
Plugin
Collections (datatabeller)
Database (databasåtgärder)
DataSourceManager (datakällshantering)
ResourceManager (resurshantering)
ACL (behörighetskontroll)
Middleware
Cache
Event (händelser)
Context (request-kontext)
Migration (uppgraderingsskript)
Logger (loggar)
I18n (internationalisering)
Command (kommandorad)
CronJobManager (schemalagda jobb)
Test (tester)

Klient-side-utveckling

Översikt
Plugin
Context (kontext)
Router (routing)
ACL (behörighetskontroll)
DataSourceManager (datakällshantering)
Resource (resurser)
Request (förfrågningar)
Stilar & teman
Logger (loggar)
I18n (internationalisering)
Test (tester)

Övrigt

Plugin-uppgraderingsguide
Språklista
Beroendehantering
Bygga
Previous PageStilar & teman
Next PageI18n (internationalisering)
TIP

Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen

#Logger

NocoBase erbjuder ett högpresterande loggningssystem baserat på pino. Överallt där ni har tillgång till context kan ni hämta en logger-instans via ctx.logger för att logga viktiga händelser under en plugin:s eller systemets körning.

#Grundläggande användning

// Loggar fatala fel (t.ex. misslyckad initiering)
ctx.logger.fatal('Applikationsinitiering misslyckades', { error });

// Loggar allmänna fel (t.ex. fel vid API-anrop)
ctx.logger.error('Dataladdning misslyckades', { status, message });

// Loggar varningar (t.ex. prestandarisker eller oväntade användaråtgärder)
ctx.logger.warn('Aktuellt formulär innehåller osparade ändringar');

// Loggar allmän körningsinformation (t.ex. att en komponent har laddats)
ctx.logger.info('Användarprofilkomponent laddad');

// Loggar felsökningsinformation (t.ex. statusändringar)
ctx.logger.debug('Aktuell användarstatus', { user });

// Loggar detaljerad spårningsinformation (t.ex. renderingsflöde)
ctx.logger.trace('Komponent renderad', { component: 'UserProfile' });

Dessa metoder motsvarar olika loggnivåer (från hög till låg):

NivåMetodBeskrivning
fatalctx.logger.fatal()Fatala fel, leder vanligtvis till att programmet avslutas
errorctx.logger.error()Felloggar, indikerar att en begäran eller åtgärd misslyckats
warnctx.logger.warn()Varningsinformation, varnar för potentiella risker eller oväntade situationer
infoctx.logger.info()Reguljär körningsinformation
debugctx.logger.debug()Felsökningsinformation, för utvecklingsmiljöer
tracectx.logger.trace()Detaljerad spårningsinformation, vanligtvis för djupgående diagnostik

#Loggformat

Varje loggutdata är i strukturerat JSON-format och innehåller som standard följande fält:

FältTypBeskrivning
levelnumberLoggnivå
timenumberTidsstämpel (millisekunder)
pidnumberProcess-ID
hostnamestringVärdnamn
msgstringLoggmeddelande
ÖvrigtobjectAnpassad kontextinformation

Exempel på utdata:

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

#Kontextbindning

ctx.logger injicerar automatiskt kontextinformation, såsom aktuell plugin, modul eller begärans källa, vilket gör att loggarna mer exakt kan spåras till sin källa.

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

Exempel på utdata (med kontext):

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

#Anpassad logger

Ni kan skapa anpassade logger-instanser i plugins, som ärver eller utökar standardkonfigurationen:

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

Underordnade loggers ärver huvudloggerns konfiguration och bifogar automatiskt kontext.

#Loggnivåhierarki

Pinos loggnivåer följer en numerisk definition från hög till låg, där lägre nummer indikerar lägre prioritet.
Nedan finns den fullständiga tabellen över loggnivåhierarkin:

NivånamnVärdeMetodnamnBeskrivning
fatal60logger.fatal()Fatala fel, leder vanligtvis till att programmet inte kan fortsätta köra
error50logger.error()Allmänna fel, indikerar misslyckad begäran eller oväntad åtgärd
warn40logger.warn()Varningsinformation, varnar för potentiella risker eller oväntade situationer
info30logger.info()Normal information, loggar systemstatus eller normala operationer
debug20logger.debug()Felsökningsinformation, för problemanalys under utvecklingsfasen
trace10logger.trace()Detaljerad spårningsinformation, för djupgående diagnostik
silent-Infinity(ingen motsvarande metod)Stänger av all loggutdata

Pino matar endast ut loggar som är större än eller lika med den aktuella level-konfigurationen. Till exempel, när loggnivån är info, kommer debug- och trace-loggar att ignoreras.

#Bästa praxis vid utveckling av plugins

  1. Använd kontextloggern
    Använd ctx.logger i plugin-, modell- eller applikationskontexter för att automatiskt inkludera källinformation.

  2. Skilj på loggnivåer

    • Använd error för att logga affärsundantag
    • Använd info för att logga statusändringar
    • Använd debug för att logga felsökningsinformation under utveckling
  3. Undvik överdriven loggning
    Särskilt på debug- och trace-nivåer rekommenderas det att endast aktivera dem i utvecklingsmiljöer.

  4. Använd strukturerad data
    Skicka in objektparametrar istället för att sammanfoga strängar, vilket underlättar logganalys och filtrering.

Genom att följa dessa metoder kan utvecklare mer effektivt spåra plugins körning, felsöka problem och upprätthålla ett strukturerat och utbyggbart loggningssystem.