لاگر

Fiber کے لئے ایک میڈل ویئر جو HTTP درخواستوں اور واپسیوں کے بارے میں تفصیلی معلومات کو لاگ کرنے کے لئے استعمال ہوتا ہے۔

انٹرفیس

func New(config ...Config) fiber.Handler

مثال

Fiber ویب فریم ورک کی میڈل ویئر پیکیج کو درآمد کریں:

import (
    "github.com/gofiber/fiber/v2"
    "github.com/gofiber/fiber/v2/middleware/logger"
)

نوٹ: رجسٹریشن کا ترتیب نہایت اہم ہے۔ صرف اس میڈل ویئر کے بعد رجسٹر شدہ راستے لاگ ہوں گے۔ اس لئے یہ میڈل ویئر پہلا رجسٹر ہونا چاہئے۔

Fiber ایپلیکیشن کی ابتدائی کرنے کے بعد، مندرجہ ذیل طریقوں سے میڈل ویئر کو رجسٹر کرنا ممکن ہے:

// ایکسٹافالٹ کنفیگریشن کے ساتھ شروع کریں
app.Use(logger.New())

// یا تشکیل کو تبدیل کریں
// ریموٹ آئی پی اور پورٹ لاگ کریں
app.Use(logger.New(logger.Config{
    Format: "[${ip}]:${port} ${status} - ${method} ${path}\n",
}))

// درخواست شناخت لاگ کریں
app.Use(requestid.New())
app.Use(logger.New(logger.Config{
    // مزید اختیارات کے لئے، Config سیکشن دیکھیں
    Format: "${pid} ${locals:requestid} ${status} - ${method} ${path}\n",
}))

// ٹائم زون اور ٹائم فارمیٹ تبدیل کریں
app.Use(logger.New(logger.Config{
    Format:     "${pid} ${status} - ${method} ${path}\n",
    TimeFormat: "02-Jan-2006",
    TimeZone:   "America/New_York",
}))

// کسٹم فائل رائٹر
file, err := os.OpenFile("./123.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
    log.Fatalf("فائل کھولنے میں خطا: %v", err)
}
defer file.Close()
app.Use(logger.New(logger.Config{
    Output: file,
}))

// کسٹم ٹیگ شامل کریں
app.Use(logger.New(logger.Config{
    CustomTags: map[string]logger.LogFunc{
        "custom_tag": func(output logger.Buffer, c *fiber.Ctx, data *logger.Data, extraParam string) (int, error) {
            return output.WriteString("یہ ایک کسٹم ٹیگ ہے")
        },
    },
}))

// لاگنگ کے بعد کال بیک فنکشن
app.Use(logger.New(logger.Config{
    TimeFormat: time.RFC3339Nano,
    TimeZone:   "Asia/Shanghai",
    Done: func(c *fiber.Ctx, logString []byte) {
        if c.Response().StatusCode() != fiber.StatusOK {
            reporter.SendToSlack(logString) 
        }
    },
}))

// ڈیفالٹ فارمیٹ میں نکال کرنے کے وقت رنگ کو غیر فعال کریں
app.Use(logger.New(logger.Config{
    DisableColors: true,
}))

ترتیب

خصوصیت قسم تفصیل ایکسٹرا ویلیو
Next func(*fiber.Ctx) bool Next ایک فنکشن ہے جو میڈل ویئر کو گزرنے سے چھوڑ دیتا ہے جب یہ true واپس کرتا ہے۔ nil
Done func(*fiber.Ctx, []byte) Done ایک فنکشن ہے جو لاگ کی رشتے کو Output میں لکھنے کے بعد بلایا جاتا ہے، جس میں لاگ کا رشتہ ایک پیرامیٹر کے طور پر موصول کیا جاتا ہے۔ nil
CustomTags map[string]LogFunc tagFunctions کسٹم ٹیگ عمل کو معرف کرتا ہے۔ map[string]LogFunc
Format string Format لاگ ٹیگز کو تعین کرتا ہے۔ [${time}] ${status} - ${latency} ${method} ${path}\n
TimeFormat string TimeFormat لاگ کے وقت کے فارمیٹ کو تعین کرتا ہے۔ 15:04:05
TimeZone string TimeZone کو "UTC" ، "America/New_York" ، "Asia/Chongqing" وغیرہ کے طور پر مخصوص کیا جا سکتا ہے۔ "Local"
TimeInterval time.Duration TimeInterval وقت کے سٹیمپ کو اپ ڈیٹ کرنے سے پہلے دیرینہ وقت ہے۔ 500 * time.Millisecond
Output io.Writer Output ایک رائٹر ہے جو لاگ کو لکھنے کے لئے استعمال ہوتا ہے۔ os.Stdout
DisableColors bool DisableColors تعین کرتا ہے کہ کیا لاگ اوٹ پر رنگوں کا استعمال ہونا چاہئے یا نہیں۔ false
enableColors bool لاگ اوٹ میں رنگوں کو فعال کرنے کے لئے اندرونی فیلڈ۔ (یہ ایک ترتیب کے مطابق فیلڈ نہیں ہے) -
enableLatency bool لاگ میں دیر شدت کو فعال کرنے کے لئے اندرونی فیلڈ۔ (یہ ایک ترتیب کے مطابق فیلڈ نہیں ہے) -
timeZoneLocation *time.Location وقت کی زون لوکیشن کے لئے اندرونی فیلڈ۔ (یہ ایک ترتیب کے مطابق فیلڈ نہیں ہے) -

ڈیفالٹ تشکیلات

var ConfigDefault = Config{
    Next:          nil,
    Done:          nil,
    Format:        "[${وقت}] ${حالت} - ${تاخیر} ${طریقہ} ${راستہ}\n",
    TimeFormat:    "15:04:05",
    TimeZone:      "مقامی",
    TimeInterval:  500 * time.Millisecond,
    Output:        os.Stdout,
    DisableColors: false,
}

مستقلات

// متکلن لاگر متغیرات
const (
    TagPid               = "پروسیس آئی ڈی"               	// پروسیس آئیڈی
    TagTime              = "وقت"              	// وقت
    TagReferer           = "ریفرر"           	// ریفرر
    TagProtocol          = "پروٹوکول"          	// پروٹوکول
    TagPort              = "پورٹ"              	// پورٹ
    TagIP                = "آئی پتہ"                	// آئی پتہ
    TagIPs               = "آئی پتہ جات"               	// آئی پتہ جات
    TagHost              = "میزبان"              	// میزبان
    TagMethod            = "طریقہ"            	// درخواست کا طریقہ
    TagPath              = "راستہ"              	// راستہ
    TagURL               = "یو آر ایل"               	// یو آر ایل
    TagUA                = "صارف ایجنٹ"                	// صارف ایجنٹ
    TagLatency           = "تاخیر"           	// تاخیر
    TagStatus            = "ردعمل حالت"            	// ردعمل کی حالت
    TagResBody           = "ردعمل باڈی"           	// ردعمل باڈی
    TagReqHeaders        = "درخواست ہیڈرز"        	// درخواست ہیڈرز
    TagQueryStringParams = "کوئری پیرامیٹرز"       	// کوئری پیرامیٹرز
    TagBody              = "باڈی"              	// درخواست کا باڈی
    TagBytesSent         = "بائٹس بھیج دیے گئے"         	// بائٹس بھیج دیے گئے
    TagBytesReceived     = "بائٹس موصول ہوئے"     	// بائٹس موصول ہوئے
    TagRoute             = "راستہ"             	// راستہ
    TagError             = "غلطی"             	// غلطی
    // منسوخ: استعمال TagReqHeader بجائے
    TagHeader            = "ہیڈر:"           	// درخواست ہیڈر
    TagReqHeader         = "درخواست ہیڈر:"        	// درخواست ہیڈر
    TagRespHeader        = "ردعمل ہیڈر:"       	// ردعمل ہیڈر
    TagQuery             = "کوئری:"            	// کوئری
    TagForm              = "فارم:"             	// فارم
    TagCookie            = "کوکی:"           	// کوکی
    TagLocals            = "مقامی متغیرات:"           	// مقامی متغیرات
    // رنگ
    TagBlack             = "سیاہ"             	// سیاہ
    TagRed               = "سرخ"               	// سرخ
    TagGreen             = "سبز"             	// سبز
    TagYellow             = "زرد"             	// زرد
    TagBlue             = "نیلا"              	// نیلا
    TagMagenta            = "انکر"           	// انکر
    TagCyan             = "سمندری"              	// سمندری
    TagWhite             = "سفید"             	// سفید
    TagReset             = "ریست"            	// ریست رنگ
)