Iris Web 框架的 accesslog 中介軟體提供傳入 HTTP 請求的詳細記錄。此中間件具有高度可配置性,可記錄請求和回應的各個方面,包括自訂欄位。
要使用accesslog中間件,您需要將其匯入您的Iris應用程式:
import ( "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/middleware/accesslog" )
以下是如何在 Iris 應用程式中使用 accesslog 中間件的基本範例:
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") }
您可以使用檔案或新功能設定日誌的輸出目的地:
ac := accesslog.File("./access.log") // or ac := accesslog.New(os.Stdout)
預設日誌格式為:
Time|Latency|Code|Method|Path|IP|Path Params Query Fields|Bytes Received|Bytes Sent|Request|Response|
您可以使用不同的格式化程式自訂日誌格式:
ac.SetFormatter(&accesslog.JSON{ Indent: " ", HumanTime: true, })
ac.SetFormatter(&accesslog.CSV{})
ac.SetFormatter(&accesslog.Template{Text: "{{.Code}}"})
您可以為日誌條目新增自訂欄位:
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) } })
啟用非同步日誌記錄以提高效能:
ac.Async = true
您可以跳過特定路線或條件的記錄:
app.UseRouter(accesslog.SkipHandler)
您可以使用 io.MultiWriter 登入多個目標:
ac.SetOutput(io.MultiWriter(os.Stdout, accesslog.File("./access.log")))
您可以為日誌時間戳記設定自訂時鐘,這對於測試很有用:
ac.Clock = accesslog.TClock(time.Now())
將accesslog中間件與其他中間件整合:
app.UseRouter(ac.Handler) app.UseRouter(otherMiddleware)
ac := accesslog.File("access_log.json") ac.SetFormatter(&accesslog.JSON{ Indent: " ", HumanTime: true, }) app.UseRouter(ac.Handler)
更多詳細資訊請參閱日誌輪替範例。
更多詳細資訊請參閱自訂欄位和範本範例。
有關更多詳細信息,請參閱日誌代理範例。
Iris 的 accesslog 中間件是一個用於記錄 HTTP 請求和回應的強大工具。憑藉其靈活的配置選項以及對自訂欄位和格式的支持,它可以進行自訂以滿足任何應用程式的需求。
更多範例和詳細使用方法請參考Iris官方文件。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3