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.
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" )
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") }
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)
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:
ac.SetFormatter(&accesslog.JSON{ Indent: " ", HumanTime: true, })
ac.SetFormatter(&accesslog.CSV{})
ac.SetFormatter(&accesslog.Template{Text: "{{.Code}}"})
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) } })
Aktivieren Sie die asynchrone Protokollierung, um die Leistung zu verbessern:
ac.Async = true
Sie können die Protokollierung für bestimmte Routen oder Bedingungen überspringen:
app.UseRouter(accesslog.SkipHandler)
Sie können sich mit io.MultiWriter an mehreren Zielen anmelden:
ac.SetOutput(io.MultiWriter(os.Stdout, accesslog.File("./access.log")))
Sie können eine benutzerdefinierte Uhr für die Protokollzeitstempel festlegen, was zum Testen nützlich ist:
ac.Clock = accesslog.TClock(time.Now())
Integrieren Sie die Accesslog-Middleware mit anderen 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)
Weitere Informationen finden Sie im Protokollrotationsbeispiel.
Weitere Informationen finden Sie im Beispiel für benutzerdefinierte Felder und Vorlagen.
Weitere Informationen finden Sie im Log-Broker-Beispiel.
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!