Maison >développement back-end >Golang >Intergiciel AccessLog pour Iris

Intergiciel AccessLog pour Iris

DDD
DDDoriginal
2024-11-01 05:50:27665parcourir

AccessLog Middleware for Iris

Le middleware accesslog pour le framework Web Iris fournit une journalisation détaillée des requêtes HTTP entrantes. Ce middleware est hautement configurable et peut enregistrer divers aspects de la demande et de la réponse, y compris les champs personnalisés.

Caractéristiques

  • Enregistre les détails des demandes et des réponses.
  • Prend en charge plusieurs formats de sortie (JSON, CSV, modèles personnalisés).
  • Peut se connecter à plusieurs destinations (fichiers, sortie standard, etc.).
  • Prise en charge de la journalisation asynchrone.
  • Champs de journal personnalisables.
  • Le middleware peut être appliqué sous condition.

Installation

Pour utiliser le middleware accesslog, vous devez l'importer dans votre application Iris :

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

Utilisation de base

Voici un exemple de base d'utilisation du middleware accesslog dans une application Iris :

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")
}

Options de configuration

Destination de sortie

Vous pouvez définir la destination de sortie des journaux à l'aide des fonctions Fichier ou Nouveau :

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

Format du journal

Le format de journal par défaut est :

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

Vous pouvez personnaliser le format du journal à l'aide de différents formateurs :

Formateur JSON

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

Formateur CSV

ac.SetFormatter(&accesslog.CSV{})

Formateur de modèles personnalisés

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

Champs personnalisés

Vous pouvez ajouter des champs personnalisés aux entrées du journal :

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)
    }
})

Journalisation asynchrone

Activez la journalisation asynchrone pour améliorer les performances :

ac.Async = true

Journalisation conditionnelle

Vous pouvez ignorer la journalisation pour des itinéraires ou des conditions spécifiques :

app.UseRouter(accesslog.SkipHandler)

Utilisation avancée

Connexion à plusieurs destinations

Vous pouvez vous connecter à plusieurs destinations à l'aide de io.MultiWriter :

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

Horloge personnalisée

Vous pouvez définir une horloge personnalisée pour les horodatages des journaux, utile pour les tests :

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

Intégration du middleware

Intégrez le middleware accesslog avec d'autres middlewares :

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

Exemples

Consigner les requêtes dans un fichier JSON

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

Utiliser la rotation des journaux

Référez-vous à l'exemple de rotation des journaux pour plus de détails.

Champs personnalisés et modèle

Référez-vous aux champs personnalisés et à l'exemple de modèle pour plus de détails.

Écouter et restituer les journaux à un client

Référez-vous à l'exemple du courtier en rondins pour plus de détails.

Conclusion

Le middleware accesslog pour Iris est un outil puissant pour enregistrer les requêtes et les réponses HTTP. Grâce à ses options de configuration flexibles et à la prise en charge de champs et de formats personnalisés, il peut être personnalisé pour répondre aux besoins de n'importe quelle application.

Pour plus d'exemples et une utilisation détaillée, reportez-vous à la documentation officielle d'Iris.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn