Diese Dokumentation wurde automatisch von KI übersetzt.
NocoBase bietet ein leistungsstarkes Logging-System, das auf pino basiert. Überall dort, wo Sie Zugriff auf den context haben, können Sie eine Logger-Instanz über ctx.logger abrufen. Diese Instanz dient dazu, wichtige Logs während der Laufzeit von Plugins oder des Systems zu erfassen.
Diese Methoden entsprechen verschiedenen Log-Ebenen (von hoch nach niedrig):
| Ebene | Methode | Beschreibung |
|---|---|---|
fatal | ctx.logger.fatal() | Fataler Fehler, der normalerweise zum Programmabbruch führt |
error | ctx.logger.error() | Fehler-Log, der einen fehlgeschlagenen Request oder eine fehlgeschlagene Operation anzeigt |
warn | ctx.logger.warn() | Warninformationen, die auf potenzielle Risiken oder unerwartete Situationen hinweisen |
info | ctx.logger.info() | Reguläre Laufzeitinformationen |
debug | ctx.logger.debug() | Debug-Informationen für die Entwicklungsumgebung |
trace | ctx.logger.trace() | Detaillierte Trace-Informationen, üblicherweise für eine tiefgehende Diagnose |
Jede Log-Ausgabe erfolgt im strukturierten JSON-Format und enthält standardmäßig die folgenden Felder:
| Feld | Typ | Beschreibung |
|---|---|---|
level | number | Log-Ebene |
time | number | Zeitstempel (Millisekunden) |
pid | number | Prozess-ID |
hostname | string | Hostname |
msg | string | Log-Nachricht |
Andere | object | Benutzerdefinierte Kontextinformationen |
Beispielausgabe:
ctx.logger injiziert automatisch Kontextinformationen, wie das aktuelle Plugin, Modul oder die Request-Quelle. Dadurch können Logs präziser ihrer Herkunft zugeordnet werden.
Beispielausgabe (mit Kontext):
Sie können in Plugins benutzerdefinierte Logger-Instanzen erstellen, die die Standardkonfigurationen erben oder erweitern:
Child-Logger erben die Konfiguration des Haupt-Loggers und fügen automatisch den Kontext hinzu.
Pinos Log-Ebenen folgen einer numerischen Definition von hoch nach niedrig, wobei kleinere Zahlen eine geringere Priorität bedeuten.
Hier ist die vollständige Tabelle der Log-Ebenen-Hierarchie:
| Ebenenname | Wert | Methodenname | Beschreibung |
|---|---|---|---|
fatal | 60 | logger.fatal() | Fataler Fehler, der normalerweise dazu führt, dass das Programm nicht weiter ausgeführt werden kann |
error | 50 | logger.error() | Allgemeiner Fehler, der einen fehlgeschlagenen Request oder eine fehlerhafte Operation anzeigt |
warn | 40 | logger.warn() | Warninformationen, die auf potenzielle Risiken oder unerwartete Situationen hinweisen |
info | 30 | logger.info() | Allgemeine Informationen, die den Systemstatus oder normale Operationen protokollieren |
debug | 20 | logger.debug() | Debug-Informationen zur Problemanalyse während der Entwicklungsphase |
trace | 10 | logger.trace() | Detaillierte Trace-Informationen für eine tiefgehende Diagnose |
silent | -Infinity | (keine Methode) | Deaktiviert alle Log-Ausgaben |
Pino gibt nur Logs aus, deren Ebene größer oder gleich der aktuell konfigurierten level-Ebene ist. Wenn die Log-Ebene beispielsweise info ist, werden debug- und trace-Logs ignoriert.
Verwenden Sie den Kontext-Logger
Nutzen Sie ctx.logger in Plugin-, Modell- oder Anwendungskontexten, um automatisch Quellinformationen mitzuführen.
Unterscheiden Sie Log-Ebenen
error, um Geschäftsfehler zu protokollieren.info, um Statusänderungen zu erfassen.debug, um Debugging-Informationen für die Entwicklung aufzuzeichnen.Vermeiden Sie übermäßige Protokollierung
Insbesondere auf den debug- und trace-Ebenen wird empfohlen, diese nur in Entwicklungsumgebungen zu aktivieren.
Verwenden Sie strukturierte Daten
Übergeben Sie Objektparameter anstelle von verketteten Zeichenfolgen. Dies erleichtert die Log-Analyse und -Filterung.
Durch die Befolgung dieser Praktiken können Entwickler die Plugin-Ausführung effizienter verfolgen, Probleme beheben und die Struktur sowie Erweiterbarkeit des Logging-Systems gewährleisten.