Maison > développement back-end > Golang > le corps du texte

Intergiciel AccessLog pour Iris

DDD
Libérer: 2024-11-01 05:50:27
original
589 Les gens l'ont consulté

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"
)
Copier après la connexion

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")
}
Copier après la connexion

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)
Copier après la connexion

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|
Copier après la connexion

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

Formateur JSON

ac.SetFormatter(&accesslog.JSON{
    Indent:    "  ",
    HumanTime: true,
})
Copier après la connexion

Formateur CSV

ac.SetFormatter(&accesslog.CSV{})
Copier après la connexion

Formateur de modèles personnalisés

ac.SetFormatter(&accesslog.Template{Text: "{{.Code}}"})
Copier après la connexion

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)
    }
})
Copier après la connexion

Journalisation asynchrone

Activez la journalisation asynchrone pour améliorer les performances :

ac.Async = true
Copier après la connexion

Journalisation conditionnelle

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

app.UseRouter(accesslog.SkipHandler)
Copier après la connexion

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")))
Copier après la connexion

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())
Copier après la connexion

Intégration du middleware

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

app.UseRouter(ac.Handler)
app.UseRouter(otherMiddleware)
Copier après la connexion

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)
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!