فائبر لاگ

ہم برنامہ کے رویہ کو مشاہدہ کرنے، مسائل کی تشخیص کرنے یا مطابقتی الرٹس تشکیل دینے کے لیے لاگ استعمال کرسکتے ہیں۔ ایک مضبوط ساخت کا لاگ تعین کرنے سے تلاش کی کارروائی میں بہتر کارکردگی اور مسائل کا حل کرنا آسان ہو جاتا ہے۔

فائبر ایک پہلے سے تعین شدہ طریقہ فراہم کرتا ہے تاکہ لاگز کو معمولی خروج پر چھاپ سکتے ہیں۔ یہ علاوہ طریقیں بھی فراہم کرتا ہے، جیسے log.Info، log.Errorf اور log.Warnw۔

لاگ کی سطحیں

const (
    LevelTrace Level = iota
    LevelDebug
    LevelInfo
    LevelWarn
    LevelError
    LevelFatal
    LevelPanic
)

مخصوص لاگ

فائبر مختلف لاگنگ لائبریریز کے لئے مختلف لاگر کو گرائے جانے والے AllLogger انٹرفیس فراہم کرتا ہے۔

type CommonLogger interface {
    Logger
    FormatLogger
    WithLogger
}

type AllLogger interface {
    CommonLogger
    ControlLogger
    WithLogger
}

لاگ چھاپنا

نوٹ: Fatal سطح پر میتھڈ کو بلند ترتیب پر بلانے سے، لاگ چھاپنے کے بعد برنامہ کو منقطع کر دیا جائے گا۔ براہ کرم تحتِ تیاری استعمال کریں۔ مختلف سطحوں پر لاگز کو سیدھے طور پر messageKey میں درآمد کیا جائے گا اور اس کو پہلے سے msg پر ترتیب دیا جائے گا۔

log.Info("ہیلو، ورلڈ!")
log.Debug("کیا حال ہے؟")
log.Info("42 زندگی، کائنات اور ہر چیز کا جواب ہے۔")
log.Warn("ہم حملے کی شکار ہیں!")
log.Error("ہیوسٹن، ہمیں مسئلہ ہے۔")
log.Fatal("ایسا ہو جائے، اور تمام مچھلیوں کا شکریہ۔")
log.Panic("نظام بند ہو گیا ہے۔")

مختلف سطحوں پر فارمیٹ اور چھاپنے کیلئے، تمام میتھڈز f کے ساتھ ختم ہوتے ہیں۔

log.Debugf("ہیلو %s", "لڑکا")
log.Infof("%d زندگی، کائنات اور ہر چیز کا جواب ہے۔", 233)
log.Warnf("ہم حملے کی شکار ہیں %s!", "باس")
log.Errorf("%s، ہمارے پاس مسئلہ ہے۔", "Master Shifu")
log.Fatalf("ایسا ہو جائے، اور تمام %s کا شکریہ۔", "کیلے")

مصنوعات کے ساتھ کلیدیں اور قیمتیں چھاپنا۔ اگر کلید اور قیمتیں جوڑا نہ ہوں، تو KEYVALS UNPAIRED چھاپی جائے گی۔

log.Debugw("", "ہیلو", "لڑکا")
log.Infow("", "نمبر", 233)
log.Warnw("", "کام", "باس")
log.Errorw("", "نام", "Master Shifu")
log.Fatalw("", "پھل", "کیلا")

گلوبل لاگ

اگر آپ صرف ایک سادہ لاگ فعل کرنا چاہتے ہیں اور اسے کسی بھی وقت گلوبل طور پر چھاپنا چاہتے ہیں تو، ہم گلوبل لاگ فراہم کرتے ہیں۔

import "github.com/gofiber/fiber/v2/log"

log.Info("ہماری جانب سے معلومات")
log.Warn("انتباہ")

اوپر دی گئی کوڈ میں معمولی log.DefaultLogger کا استعمال ہے۔ آپ contrib فولڈر میں پہلے ہی فراہم کردہ ایڈاپٹرز بھی تلاش کرسکتے ہیں، یا اپنی وجہ سے پیشکش کی گئی Logger کا استعمال کرکے گلوبل لاگر کو log.SetLogger سے تعین کرسکتے ہیں۔

import (
    "log"
    fiberlog "github.com/gofiber/fiber/v2/log"
)

var _ log.AllLogger = (*customLogger)(nil)

type customLogger struct {
    stdlog *log.Logger
}

// ...
// اختیار تصویر کریں
fiberlog.SetLogger(customLogger)

سطح تعین کرنا

log.SetLevel سطحوں کو تعین کرتا ہے جو اس سطح سے کم ہوں گے اور غیر خارج ہوں گی۔ ڈیفالٹ لاگ ریکارڈر LevelTrace ہے۔

براہ کرم نوٹ کریں کہ یہ میتھڈ کنکرنسی سیف نہیں ہے۔

import "github.com/gofiber/fiber/v2/log"

log.SetLevel(log.LevelInfo)

خروج تعین کرنا

log.SetOutput لاگنگ کے لئے خروج کی منزل تعین کرتا ہے۔ ڈیفالٹ طور پر، لاگر لاگز کو کنسول پر چھاپتا ہے۔

var logger AllLogger = &defaultLogger{
    stdlog: log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile|log.Lmicroseconds),
    depth:  4,
}

منزل کو فائل کے لیے تعین کرنا۔

// fail.log فائل میں خروج کریں
f, err := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
    return
}
log.SetOutput(f)

منزل کو کنسول اور فائل دونوں کیلئے تعین کرنا۔

// fail.log فائل میں خروج کریں
file, _ := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
iw := io.MultiWriter(os.Stdout, file)
log.SetOutput(iw)

بائنڈ سیاق و سباق

سیاق و سباق تعین کریں، اور مندرجہ ذیل ترکیب استعمال کریں تاکہ مخصوص سیاق و سباق کے ساتھ منسلک ایک CommonLogger مثال واپس کرے۔

commonLogger := log.WithContext(ctx)
commonLogger.Info("info")

نوٹ: یہ فائبر فریم ورک کے لئے پہلے سے تیار لاگنگ لائبریری ہے۔ یقیناً، آپ دوسری معروف گولانگ کھولے جانے والے لاگنگ لائبریری کا انتخاب کر سکتے ہیں۔