Heim  >  Artikel  >  Backend-Entwicklung  >  AccessLog-Middleware für Iris

AccessLog-Middleware für Iris

DDD
DDDOriginal
2024-11-01 05:50:27572Durchsuche

AccessLog Middleware for Iris

Die Accesslog-Middleware für das Iris-Webframework bietet eine detaillierte Protokollierung eingehender HTTP-Anfragen. Diese Middleware ist hochgradig konfigurierbar und kann verschiedene Aspekte der Anfrage und Antwort protokollieren, einschließlich benutzerdefinierter Felder.

Merkmale

  • Protokolliert Anfrage- und Antwortdetails.
  • Unterstützt mehrere Ausgabeformate (JSON, CSV, benutzerdefinierte Vorlagen).
  • Kann sich an mehreren Zielen anmelden (Dateien, Standardausgabe usw.).
  • Unterstützung für asynchrone Protokollierung.
  • Anpassbare Protokollfelder.
  • Middleware kann bedingt angewendet werden.

Installation

Um die Accesslog-Middleware zu verwenden, müssen Sie sie in Ihre Iris-Anwendung importieren:

import (
    "github.com/kataras/iris/v12"
    "github.com/kataras/iris/v12/middleware/accesslog"
)

Grundlegende Verwendung

Hier ist ein einfaches Beispiel für die Verwendung der Accesslog-Middleware in einer Iris-Anwendung:

package main

import (
    "github.com/kataras/iris/v12"
    "github.com/kataras/iris/v12/middleware/accesslog"
)

func makeAccessLog() *accesslog.AccessLog {
    ac := accesslog.File("./access.log")

    ac.Delim = '|'
    ac.TimeFormat = "2006-01-02 15:04:05"
    ac.Async = false
    ac.IP = true
    ac.BytesReceivedBody = true
    ac.BytesSentBody = true
    ac.BytesReceived = false
    ac.BytesSent = false
    ac.RequestBody = true
    ac.ResponseBody = false
    ac.KeepMultiLineError = true
    ac.PanicLog = accesslog.LogHandler

    ac.SetFormatter(&accesslog.JSON{
        Indent:    "  ",
        HumanTime: true,
    })

    return ac
}

func main() {
    ac := makeAccessLog()
    defer ac.Close()

    app := iris.New()
    app.UseRouter(ac.Handler)

    app.Get("/", func(ctx iris.Context) {
        ctx.WriteString("OK")
    })

    app.Listen(":8080")
}

Konfigurationsoptionen

Ausgabeziel

Sie können das Ausgabeziel für die Protokolle mithilfe der Funktionen „Datei“ oder „Neu“ festlegen:

ac := accesslog.File("./access.log")
// or
ac := accesslog.New(os.Stdout)

Protokollformat

Das Standardprotokollformat ist:

Time|Latency|Code|Method|Path|IP|Path Params Query Fields|Bytes Received|Bytes Sent|Request|Response|

Sie können das Protokollformat mithilfe verschiedener Formatierer anpassen:

JSON-Formatierer

ac.SetFormatter(&accesslog.JSON{
    Indent:    "  ",
    HumanTime: true,
})

CSV-Formatierer

ac.SetFormatter(&accesslog.CSV{})

Benutzerdefinierter Vorlagenformatierer

ac.SetFormatter(&accesslog.Template{Text: "{{.Code}}"})

Benutzerdefinierte Felder

Sie können den Protokolleinträgen benutzerdefinierte Felder hinzufügen:

ac.AddFields(func(ctx iris.Context, f *accesslog.Fields) {
    for k, v := range ctx.Request().Header {
        value := strings.Join(v, ", ")
        f.Set("request.header."+k, value)
    }
})

Asynchrone Protokollierung

Aktivieren Sie die asynchrone Protokollierung, um die Leistung zu verbessern:

ac.Async = true

Bedingte Protokollierung

Sie können die Protokollierung für bestimmte Routen oder Bedingungen überspringen:

app.UseRouter(accesslog.SkipHandler)

Erweiterte Nutzung

Protokollierung an mehreren Zielen

Sie können sich mit io.MultiWriter an mehreren Zielen anmelden:

ac.SetOutput(io.MultiWriter(os.Stdout, accesslog.File("./access.log")))

Benutzerdefinierte Uhr

Sie können eine benutzerdefinierte Uhr für die Protokollzeitstempel festlegen, was zum Testen nützlich ist:

ac.Clock = accesslog.TClock(time.Now())

Middleware-Integration

Integrieren Sie die Accesslog-Middleware mit anderen Middlewares:

app.UseRouter(ac.Handler)
app.UseRouter(otherMiddleware)

Beispiele

Protokollieren Sie Anfragen in einer JSON-Datei

ac := accesslog.File("access_log.json")
ac.SetFormatter(&accesslog.JSON{
    Indent:    "  ",
    HumanTime: true,
})
app.UseRouter(ac.Handler)

Verwenden der Protokollrotation

Weitere Informationen finden Sie im Protokollrotationsbeispiel.

Benutzerdefinierte Felder und Vorlage

Weitere Informationen finden Sie im Beispiel für benutzerdefinierte Felder und Vorlagen.

Abhören und Rendern von Protokollen für einen Client

Weitere Informationen finden Sie im Log-Broker-Beispiel.

Abschluss

Die Accesslog-Middleware für Iris ist ein leistungsstarkes Tool zum Protokollieren von HTTP-Anfragen und -Antworten. Mit seinen flexiblen Konfigurationsoptionen und der Unterstützung benutzerdefinierter Felder und Formate kann es an die Anforderungen jeder Anwendung angepasst werden.

Weitere Beispiele und eine detaillierte Verwendung finden Sie in der offiziellen Iris-Dokumentation.

Das obige ist der detaillierte Inhalt vonAccessLog-Middleware für Iris. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn