"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > AccessLog الوسيطة لـ Iris

AccessLog الوسيطة لـ Iris

تم النشر بتاريخ 2024-11-03
تصفح:417

AccessLog Middleware for Iris

توفر البرامج الوسيطة لسجل الوصول لإطار عمل الويب Iris تسجيلاً تفصيليًا لطلبات HTTP الواردة. هذه البرامج الوسيطة قابلة للتكوين بشكل كبير ويمكنها تسجيل جوانب مختلفة من الطلب والاستجابة، بما في ذلك الحقول المخصصة.

سمات

  • سجلات الطلب وتفاصيل الاستجابة.
  • يدعم تنسيقات إخراج متعددة (JSON، CSV، قوالب مخصصة).
  • يمكن تسجيل الدخول إلى وجهات متعددة (الملفات، stdout، وما إلى ذلك).
  • دعم التسجيل غير المتزامن.
  • حقول السجل القابلة للتخصيص.
  • يمكن تطبيق البرامج الوسيطة بشكل مشروط.

تثبيت

لاستخدام البرنامج الوسيط لسجل الوصول، تحتاج إلى استيراده في تطبيق 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|

يمكنك تخصيص تنسيق السجل باستخدام تنسيقات مختلفة:

تنسيق JSON

ac.SetFormatter(&accesslog.JSON{
    Indent:    "  ",
    HumanTime: true,
})

منسق CSV

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)

أمثلة

تسجيل الطلبات إلى ملف JSON

ac := accesslog.File("access_log.json")
ac.SetFormatter(&accesslog.JSON{
    Indent:    "  ",
    HumanTime: true,
})
app.UseRouter(ac.Handler)

باستخدام دوران السجل

راجع مثال تدوير السجل لمزيد من التفاصيل.

الحقول المخصصة والقالب

راجع الحقول المخصصة ومثال القالب لمزيد من التفاصيل.

الاستماع وتقديم السجلات إلى العميل

راجع مثال وسيط السجل لمزيد من التفاصيل.

خاتمة

تعد البرامج الوسيطة لسجل الوصول لـ Iris أداة قوية لتسجيل طلبات واستجابات HTTP. وبفضل خيارات التكوين المرنة ودعم الحقول والتنسيقات المخصصة، يمكن تصميمه لتلبية احتياجات أي تطبيق.

لمزيد من الأمثلة والاستخدام التفصيلي، راجع وثائق Iris الرسمية.

بيان الافراج تم نشر هذه المقالة على: https://dev.to/kataras/accesslog-middleware-for-iris-4lhm?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3