سجل الألياف
يمكننا استخدام السجلات لمراقبة سلوك البرنامج، وتشخيص المشاكل، أو تكوين تنبيهات متوافقة. تعريف سجل مُنظم بشكل جيد يمكن أن يحسن من كفاءة البحث ويسهل التعامل مع المشاكل.
توفر "فايبر" طريقة افتراضية لطباعة السجلات إلى الإخراج القياسي. كما توفر أيضًا عدة وظائف عالمية، مثل 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، لدينا مشكلة.", "ماستر شيفو")
log.Fatalf("أود انتهاء الوقت، وشكرًا على كل %s.", "موز")
طباعة الرسائل مع مفاتيح وقيم. إذا لم تكن المفاتيح والقيم متزانة، سيتم طباعة KEYVALS UNPAIRED
.
log.Debugw("", "مرحبًا", "صبي")
log.Infow("", "الرقم", 233)
log.Warnw("", "المهمة", "رئيس")
log.Errorw("", "الاسم", "ماستر شيفو")
log.Fatalw("", "الفاكهة", "موز")
سجل عالمي
إذا كنت ترغب في استخدام وظيفة سجل بسيطة فقط في مشروع وطباعتها عالميًا في أي وقت، نحن نُوفّر سجلًا عالميًا.
import "github.com/gofiber/fiber/v2/log"
log.Info("معلومات")
log.Warn("تحذير")
يستخدم الكود أعلاه log.DefaultLogger
الافتراضي للإخراج القياسي. يمكنك أيضًا العثور على محولات تم تنفيذها بالفعل في مجلد "المساهمات"، أو استخدام 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,
}
تعيين وجهة الإخراج إلى ملف.
// الإخراج إلى ملف test.log
f, err := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
return
}
log.SetOutput(f)
تعيين وجهة الإخراج إلى وحدة التحكم وملف.
// الإخراج إلى ملف test.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")
ملاحظة: هذه هي المكتبة الافتراضية لتسجيل الأحداث لإطار العمل Fiber. بالطبع، يمكنك اختيار مكتبات تسجيل الأحداث المفتوحة المصدر الأخرى المعروفة لـ Go.