فائبر لاگ
ہم برنامہ کے رویہ کو مشاہدہ کرنے، مسائل کی تشخیص کرنے یا مطابقتی الرٹس تشکیل دینے کے لیے لاگ استعمال کرسکتے ہیں۔ ایک مضبوط ساخت کا لاگ تعین کرنے سے تلاش کی کارروائی میں بہتر کارکردگی اور مسائل کا حل کرنا آسان ہو جاتا ہے۔
فائبر ایک پہلے سے تعین شدہ طریقہ فراہم کرتا ہے تاکہ لاگز کو معمولی خروج پر چھاپ سکتے ہیں۔ یہ علاوہ طریقیں بھی فراہم کرتا ہے، جیسے 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")
نوٹ: یہ فائبر فریم ورک کے لئے پہلے سے تیار لاگنگ لائبریری ہے۔ یقیناً، آپ دوسری معروف گولانگ کھولے جانے والے لاگنگ لائبریری کا انتخاب کر سکتے ہیں۔