logologo
Démarrer
Manuel
Développement
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
Démarrer
Manuel
Développement
Plugins
API
logologo

Démarrage rapide

Aperçu du développement de plugins
Créer son premier plugin
Structure des répertoires du projet

Développement côté serveur

Aperçu
Plugin
Collections (Tables de données)
Database (Opérations)
DataSourceManager (Gestion des sources de données)
ResourceManager (Gestion des ressources)
ACL (Contrôle des permissions)
Middleware
Cache
Event (Événement)
Context (Contexte de la requête)
Migration (Script de mise à niveau)
Logger (Journal)
I18n (Internationalisation)
Command (Ligne de commande)
CronJobManager (Gestion des tâches planifiées)
Test

Développement côté client

Aperçu
Plugin
Context (Contexte)
Router (Routeur)
ACL (Contrôle des permissions)
DataSourceManager (Gestion des sources de données)
Resource (Ressource)
Request (Requête)
Styles & Themes
Logger (Journal)
I18n (Internationalisation)
Test

Autres

Guide de mise à niveau des plugins
Liste des langues
Gestion des dépendances
Build
Previous PageStyles & Themes
Next PageI18n (Internationalisation)
Avis de traduction IA

Cette documentation a été traduite automatiquement par IA.

#Le Logger

NocoBase propose un système de journalisation (logging) performant basé sur pino. Partout où vous avez accès à un context, vous pouvez obtenir une instance de logger via ctx.logger pour enregistrer les journaux essentiels lors de l'exécution d'un plugin ou du système.

#Utilisation de base

// Enregistre les erreurs fatales (par exemple, échec de l'initialisation)
ctx.logger.fatal('Application initialization failed', { error });

// Enregistre les erreurs générales (par exemple, erreurs de requête API)
ctx.logger.error('Data loading failed', { status, message });

// Enregistre les avertissements (par exemple, risques de performance ou opérations utilisateur inattendues)
ctx.logger.warn('Current form contains unsaved changes');

// Enregistre les informations d'exécution générales (par exemple, composant chargé)
ctx.logger.info('User profile component loaded');

// Enregistre les informations de débogage (par exemple, changements d'état)
ctx.logger.debug('Current user state', { user });

// Enregistre les informations de trace détaillées (par exemple, flux de rendu)
ctx.logger.trace('Component rendered', { component: 'UserProfile' });

Ces méthodes correspondent à différents niveaux de journalisation (du plus élevé au plus bas) :

NiveauMéthodeDescription
fatalctx.logger.fatal()Erreurs fatales, entraînant généralement l'arrêt du programme
errorctx.logger.error()Journaux d'erreurs, indiquant un échec de requête ou d'opération
warnctx.logger.warn()Informations d'avertissement, signalant des risques potentiels ou des situations inattendues
infoctx.logger.info()Informations d'exécution courantes
debugctx.logger.debug()Informations de débogage, destinées à l'environnement de développement
tracectx.logger.trace()Informations de trace détaillées, généralement utilisées pour un diagnostic approfondi

#Format des journaux

Chaque sortie de journal est au format JSON structuré et contient par défaut les champs suivants :

ChampTypeDescription
levelnumberNiveau du journal
timenumberHorodatage (millisecondes)
pidnumberID du processus
hostnamestringNom d'hôte
msgstringMessage du journal
AutresobjectInformations de contexte personnalisées

Exemple de sortie :

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

#Liaison de contexte

ctx.logger injecte automatiquement des informations de contexte, telles que le plugin actuel, le module ou la source de la requête, permettant ainsi de tracer plus précisément l'origine des journaux.

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

Exemple de sortie (avec contexte) :

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

#Logger personnalisé

Vous pouvez créer des instances de logger personnalisées dans vos plugins, en héritant ou en étendant les configurations par défaut :

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

Les loggers enfants héritent de la configuration du logger principal et y attachent automatiquement le contexte.

#Hiérarchie des niveaux de journalisation

Les niveaux de journalisation de Pino suivent une définition numérique du plus élevé au plus bas, où les nombres plus petits indiquent une priorité plus faible.
Voici le tableau complet de la hiérarchie des niveaux de journalisation :

Nom du niveauValeurNom de la méthodeDescription
fatal60logger.fatal()Erreurs fatales, empêchant généralement le programme de continuer à s'exécuter
error50logger.error()Erreurs générales, indiquant un échec de requête ou des opérations inattendues
warn40logger.warn()Informations d'avertissement, signalant des risques potentiels ou des situations inattendues
info30logger.info()Informations courantes, enregistrant l'état du système ou les opérations normales
debug20logger.debug()Informations de débogage, utilisées pour l'analyse des problèmes en phase de développement
trace10logger.trace()Informations de trace détaillées, utilisées pour un diagnostic approfondi
silent-Infinity(aucune méthode correspondante)Désactive toutes les sorties de journal

Pino n'affiche que les journaux dont le niveau est supérieur ou égal à la configuration level actuelle. Par exemple, lorsque le niveau de journalisation est info, les journaux debug et trace seront ignorés.

#Bonnes pratiques pour le développement de plugins

  1. Utilisez le logger de contexte
    Utilisez ctx.logger dans les contextes de plugin, de modèle ou d'application pour inclure automatiquement les informations d'origine.

  2. Distinguez les niveaux de journalisation

    • Utilisez error pour enregistrer les exceptions métier.
    • Utilisez info pour enregistrer les changements d'état.
    • Utilisez debug pour enregistrer les informations de débogage de développement.
  3. Évitez la journalisation excessive
    Il est recommandé de n'activer les niveaux debug et trace que dans les environnements de développement.

  4. Utilisez des données structurées
    Passez des paramètres d'objet plutôt que de concaténer des chaînes de caractères, ce qui facilite l'analyse et le filtrage des journaux.

En suivant ces pratiques, les développeurs peuvent suivre plus efficacement l'exécution des plugins, résoudre les problèmes et maintenir un système de journalisation structuré et extensible.