گزارش فیبر
ما میتوانیم از گزارشها برای مشاهده رفتار برنامه، تشخیص مشکلات یا پیکربندی هشدارهای مرتبط استفاده کنیم. تعریف یک گزارش با ساختار خوب میتواند کارآیی جستجو را بهبود بخشیده و برخورد با مسائل را آسانتر کند.
فیبر یک روش پیشفرض برای چاپ گزارشات به خروجی استاندارد فراهم میکند. همچنین چندین تابع سراسری را نیز فراهم میکند، مانند 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
پیشفرض برای خروجی استاندارد استفاده میکند. همچنین میتوانید آداپتورهایی که قبلاً پیادهسازی شدهاند را در پوشه 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,
}
تنظیم مقصد خروجی به یک فایل.
// خروجی به فایل 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 دیگر معروف برای ورود به سیستم استفاده کنید.