AccessLog-Middleware für Iris

DDD
Freigeben: 2024-11-01 05:50:27
Original
588 Leute haben es durchsucht

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"
)
Nach dem Login kopieren

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")
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

Protokollformat

Das Standardprotokollformat ist:

Time|Latency|Code|Method|Path|IP|Path Params Query Fields|Bytes Received|Bytes Sent|Request|Response|
Nach dem Login kopieren

Sie können das Protokollformat mithilfe verschiedener Formatierer anpassen:

JSON-Formatierer

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

CSV-Formatierer

ac.SetFormatter(&accesslog.CSV{})
Nach dem Login kopieren

Benutzerdefinierter Vorlagenformatierer

ac.SetFormatter(&accesslog.Template{Text: "{{.Code}}"})
Nach dem Login kopieren

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)
    }
})
Nach dem Login kopieren

Asynchrone Protokollierung

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

ac.Async = true
Nach dem Login kopieren

Bedingte Protokollierung

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

app.UseRouter(accesslog.SkipHandler)
Nach dem Login kopieren

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")))
Nach dem Login kopieren

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())
Nach dem Login kopieren

Middleware-Integration

Integrieren Sie die Accesslog-Middleware mit anderen Middlewares:

app.UseRouter(ac.Handler)
app.UseRouter(otherMiddleware)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:dev.to
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!