Fiber Günlüğü
Programın davranışını gözlemlemek, sorunları teşhis etmek veya ilgili uyarıları yapılandırmak için günlükleri kullanabiliriz. İyi bir yapıya sahip bir günlük tanımlamak, arama verimliliğini artırabilir ve problem çözümünü kolaylaştırabilir.
Fiber, günlükleri standart çıktıya yazdırmak için varsayılan bir yol sağlar. Ayrıca log.Info
, log.Errorf
ve log.Warnw
gibi birkaç global fonksiyon da sağlar.
Günlük Seviyeleri
const (
LevelTrace Level = iota
LevelDebug
LevelInfo
LevelWarn
LevelError
LevelFatal
LevelPanic
)
Özel Günlük
Fiber, çeşitli günlükleme kütüphanelerine uyum sağlamak için AllLogger
arayüzünü sağlar.
type CommonLogger interface {
Logger
FormatLogger
WithLogger
}
type AllLogger interface {
CommonLogger
ControlLogger
WithLogger
}
Günlükleri Yazdırma
Not: Fatal
seviyesindeki yöntemleri çağırmak, günlüğü yazdırdıktan sonra programın çalışmasını durduracaktır. Lütfen dikkatlice kullanın. Farklı seviyelerde doğrudan günlük yazdırmak, varsayılan olarak msg
olarak ayarlanmış olan messageKey
'e girecektir.
log.Info("Merhaba, Dünya!")
log.Debug("İyi misin?")
log.Info("42, hayatın, evrenin ve her şeyin cevabıdır")
log.Warn("Saldırı altındayız!")
log.Error("Houston, bir sorunumuz var.")
log.Fatal("Uzun ve Sağlıcakla, ve Bütün Balıklar için Teşekkürler.")
log.Panic("Sistem çöktü.")
Farklı seviyelerdeki günlükleri biçimlendirme ve yazdırma, tüm yöntemler f
ile biter.
log.Debugf("Merhaba %s", "çocuk")
log.Infof("%d, hayatın, evrenin ve her şeyin cevabıdır", 233)
log.Warnf("Saldırı altındayız %s!", "patron")
log.Errorf("%s, bir sorunumuz var.", "Usta Şifu")
log.Fatalf("Uzun ve Sağlıcakla, ve Bütün %s için Teşekkürler.", "muz")
Anahtarlar ve değerlerle mesajları yazdırma. Eğer anahtarlar ve değerler eşleşmiyorsa, KEYVALS UNPAIRED
yazdırılacaktır.
log.Debugw("", "Merhaba", "çocuk")
log.Infow("", "sayı", 233)
log.Warnw("", "iş", "patron")
log.Errorw("", "isim", "Usta Şifu")
log.Fatalw("", "meyve", "muz")
Global Günlük
Bir projede yalnızca basit bir günlük işlevi kullanmak ve her zaman global olarak yazdırmak istiyorsanız, global bir günlük sağlarız.
import "github.com/gofiber/fiber/v2/log"
log.Info("bilgi")
log.Warn("uyarı")
Yukarıdaki kod, standart çıktı için varsayılan log.DefaultLogger
'ı kullanır. Ayrıca contrib
klasöründe zaten uygulanmış adaptörleri bulabilir veya kendi uyguladığınız Logger
'ı kullanarak ve log.SetLogger
kullanarak global günlüğü ayarlayabilirsiniz.
import (
"log"
fiberlog "github.com/gofiber/fiber/v2/log"
)
var _ log.AllLogger = (*customLogger)(nil)
type customLogger struct {
stdlog *log.Logger
}
// ...
// Özel günlüğü enjekte et
fiberlog.SetLogger(customLogger)
Seviye Ayarlama
log.SetLevel
, bu seviyeden düşük olan günlükleri ayarlar ve çıktıya yazdırmaz. Varsayılan günlük kaydedici LevelTrace
'dir.
Lütfen bu yöntemin eşzamanlı güvenli olmadığını unutmayın.
import "github.com/gofiber/fiber/v2/log"
log.SetLevel(log.LevelInfo)
Çıktı Ayarlama
log.SetOutput
, günlük için çıkış hedefini ayarlar. Varsayılan olarak, günlükçü günlükleri konsola yazdırır.
var logger AllLogger = &defaultLogger{
stdlog: log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile|log.Lmicroseconds),
depth: 4,
}
Çıkış hedefini bir dosyaya ayarlama.
// test.log dosyasına çıktı
f, err := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
return
}
log.SetOutput(f)
Çıkış hedefini hem konsola hem de bir dosyaya ayarlama.
// test.log dosyasına çıktı
dosya, _ := os.OpenFile("test.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
iw := io.MultiWriter(os.Stdout, dosya)
log.SetOutput(iw)
Bağlamı Bağla
Bağlamı ayarlayın ve belirtilen bağlama bağlı bir CommonLogger
örneğini döndürmek için aşağıdaki yöntemi kullanın.
commonLogger := log.WithContext(ctx)
commonLogger.Info("info")
Not: Bu, Fiber çerçevesi için varsayılan günlükleme kütüphanesidir. Tabii ki, diğer bilinen Go açık kaynaklı günlükleme kütüphanelerini de seçebilirsiniz.