Back to Vapor

Protokollierung

docs/basics/logging.de.md

latest3.3 KB
Original Source

Protokollierung

Mit der Protokollierung können Statusinformationen und Systemereignisse in Vapor festgehalten und ausgegeben werden. Die Protokollierung in Vapor baut auf Apple's SwiftLog auf.

Logger

Die Logger Instanz gibt die Protokollinformationen aus. Wir haben verschiedene Möglichkeiten auf die Instanz zuzugreifen.

Zugriff über die Anfrage

Jede eingehende Anfrage besitzt eine unabhängige Logger Instanz, die für die jeweilige Anfrage verwendet werden kann.

swift
app.get("hello") { req -> String in
    req.logger.info("Hello, logs!")
    return "Hello, world!"
}
[ INFO ] Hello, logs! [request-id: C637065A-8CB0-4502-91DC-9B8615C5D315] (App/routes.swift:10)

Zugriff über die Anwendung

Für Informationen während des Startens oder der Einrichtung können wir die Instanz Application nutzen.

swift
app.logger.info("Setting up migrations...")
app.migrations.use(...)

Benutzerdefinierte Protokollierung

Falls wir nicht auf Beides zurückgreifen können, können wir eine eigene Instanz erstellen.

swift
let logger = Logger(label: "dev.logger.my")
logger.info(...)

Protokollstufen

Protokollstufen steuern den Informationsumfang. Vapor protokolliert standardmäßig auf der Stufe info. Mit Wechseln in die Produktionsumgebung verwendet Vapor zur Verbesserung der Performance die Stufe notice. Es gibt noch weitere Protokollstufen:

StufenBeschreibung
traceGeeignet für Informationen, die zur Ablaufverfolgung nüztlich sein können.
debugGeeignet für Informationen, die fürs Debuggen nützlich sein können.
infoGeeignet für allgemeinen Informationen.
noticeGeeignet für unerwartete Ereignisse, die jedoch zu keinem Anwendungsausfall führen.
warningGeeignet für unerwartete Ereignisse, die allerdings schwerwiegender sind als in notice.
errorGeeigent für Fehlerzustände.
criticalGeeignet für kritische Fehlerzustände, die ein sofortiges Handeln erfordern.

Festlegen einer Protokollstufe

Unhabhängig von der Umgebung können wir Protokollstufen mit Hilfe des Parameters --log oder der Umgebungsvariable LOG_LEVEL festlegen.

sh
swift run App serve --log debug

oder

sh
export LOG_LEVEL=debug
swift run App serve

Beides kann über das Schema App in Xcode eingestellt werden. Im Abschnitt Xcode erklären wir dir, wie du ein Schema bearbeitest.

Einrichtung

SwiftLog wird von Vapor mit Hilfe der Methode bootstrap(:) basierend auf dem Kommandozeilenargument oder der Umgebungsvariable einmal pro Prozess eingerichtet.

swift
import Vapor

var env = try Environment.detect()
try LoggingSystem.bootstrap(from: &env)

Protokollierungsanbieter

Der Standardanbieter kann, wenn gewünscht, überschrieben werden. Dank der Verwendung von SwiftLog kann jeder kompatible Protokollierungsanbieter verwendet werden. Allerdings ist das Ändern der Protokollierstufe per Kommandozeilenargument oder Umgebungsvariable nur mit dem Standardanbieter möglich.

swift
import Logging

LoggingSystem.bootstrap { label in
    StreamLogHandler.standardOutput(label: label)
}