Logger-Middleware
Ein einfacher Logger.
Import
import { Hono } from 'hono'
import { logger } from 'hono/logger'Verwendung
const app = new Hono()
app.use(logger())
app.get('/', (c) => c.text('Hello Hono!'))Protokollierte Details
Die Logger-Middleware protokolliert für jede Anfrage folgende Details:
- Eingehende Anfrage: Protokolliert die HTTP-Methode, den Anfragepfad und die eingehende Anfrage.
- Ausgehende Antwort: Protokolliert die HTTP-Methode, den Anfragepfad, den Antwortstatuscode und die Anfrage-/Antwortzeiten.
- Farbige Statuscodes: Antwortstatuscodes werden farbig dargestellt, damit sie besser sichtbar sind und sich Statuskategorien schnell erkennen lassen. Verschiedene Kategorien erhalten unterschiedliche Farben.
- Verstrichene Zeit: Die Dauer des Anfrage-/Antwortzyklus wird in einem lesbaren Format in Millisekunden (ms) oder Sekunden (s) protokolliert.
Mit der Logger-Middleware kannst du den Fluss von Anfragen und Antworten in deiner Hono-Anwendung einfach überwachen und Probleme oder Leistungsengpässe schnell erkennen.
Du kannst die Middleware außerdem mit einer eigenen Funktion PrintFunc erweitern, um das Protokollierungsverhalten anzupassen.
Tipp
Zum Deaktivieren der Färbung von Statuscodes kannst du die Umgebungsvariable NO_COLOR setzen. Dies ist ein gängiges Verfahren zum Deaktivieren von ANSI-Farbcodes in Logging-Bibliotheken und wird unter https://no-color.org/ beschrieben. Beachte, dass Cloudflare Workers kein Objekt process.env besitzt und daher standardmäßig reine Textprotokolle ausgibt.
PrintFunc
Die Logger-Middleware akzeptiert optional eine Funktion PrintFunc als Parameter. Damit kannst du den Logger anpassen und zusätzliche Protokolleinträge ausgeben.
Optionen
optional fn: PrintFunc(str: string, ...rest: string[])
str: Vom Logger übergeben....rest: Zusätzliche Zeichenfolgenargumente, die in der Konsole ausgegeben werden.
Beispiel
Eine eigene Funktion PrintFunc für die Logger-Middleware einrichten:
export const customLogger = (message: string, ...rest: string[]) => {
console.log(message, ...rest)
}
app.use(logger(customLogger))Den eigenen Logger in einer Route einrichten:
app.post('/blog', (c) => {
// Routing logic
customLogger('Blog saved:', `Path: ${blog.url},`, `ID: ${blog.id}`)
// Output
// <-- POST /blog
// Blog saved: Path: /blog/example, ID: 1
// --> POST /blog 201 93ms
// Return Context
})