توفر البرامج الوسيطة لسجل الوصول لإطار عمل الويب Iris تسجيلاً تفصيليًا لطلبات HTTP الواردة. هذه البرامج الوسيطة قابلة للتكوين بشكل كبير ويمكنها تسجيل جوانب مختلفة من الطلب والاستجابة، بما في ذلك الحقول المخصصة.
لاستخدام البرنامج الوسيط لسجل الوصول، تحتاج إلى استيراده في تطبيق Iris الخاص بك:
import ( "github.com/kataras/iris/v12" "github.com/kataras/iris/v12/middleware/accesslog" )
فيما يلي مثال أساسي لكيفية استخدام البرنامج الوسيط لسجل الوصول في تطبيق 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") }
يمكنك تعيين وجهة الإخراج للسجلات باستخدام وظائف الملف أو الجديد:
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())
دمج البرامج الوسيطة لسجل الوصول مع البرامج الوسيطة الأخرى:
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 أداة قوية لتسجيل طلبات واستجابات HTTP. وبفضل خيارات التكوين المرنة ودعم الحقول والتنسيقات المخصصة، يمكن تصميمه لتلبية احتياجات أي تطبيق.
لمزيد من الأمثلة والاستخدام التفصيلي، راجع وثائق Iris الرسمية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3