Maison >développement back-end >Golang >Intergiciel AccessLog pour 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.
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" )
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") }
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)
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 :
ac.SetFormatter(&accesslog.JSON{ Indent: " ", HumanTime: true, })
ac.SetFormatter(&accesslog.CSV{})
ac.SetFormatter(&accesslog.Template{Text: "{{.Code}}"})
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) } })
Activez la journalisation asynchrone pour améliorer les performances :
ac.Async = true
Vous pouvez ignorer la journalisation pour des itinéraires ou des conditions spécifiques :
app.UseRouter(accesslog.SkipHandler)
Vous pouvez vous connecter à plusieurs destinations à l'aide de io.MultiWriter :
ac.SetOutput(io.MultiWriter(os.Stdout, accesslog.File("./access.log")))
Vous pouvez définir une horloge personnalisée pour les horodatages des journaux, utile pour les tests :
ac.Clock = accesslog.TClock(time.Now())
Intégrez le middleware accesslog avec d'autres middlewares :
app.UseRouter(ac.Handler) app.UseRouter(otherMiddleware)
ac := accesslog.File("access_log.json") ac.SetFormatter(&accesslog.JSON{ Indent: " ", HumanTime: true, }) app.UseRouter(ac.Handler)
Référez-vous à l'exemple de rotation des journaux pour plus de détails.
Référez-vous aux champs personnalisés et à l'exemple de modèle pour plus de détails.
Référez-vous à l'exemple du courtier en rondins pour plus de détails.
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!