Fiber Log
Kita dapat menggunakan log untuk mengamati perilaku dari program, mendiagnosis isu, atau mengonfigurasi pemberitahuan yang sesuai. Mendefinisikan log yang terstruktur dengan baik dapat meningkatkan efisiensi pencarian dan memudahkan penanganan masalah.
Fiber menyediakan cara default untuk mencetak log ke output standar. Ini juga menyediakan beberapa fungsi global, seperti log.Info
, log.Errorf
, dan log.Warnw
.
Tingkatan Log
const (
LevelTrace Level = iota
LevelDebug
LevelInfo
LevelWarn
LevelError
LevelFatal
LevelPanic
)
Log Kustom
Fiber menyediakan antarmuka AllLogger
untuk beradaptasi dengan berbagai library logging.
type CommonLogger interface {
Logger
FormatLogger
WithLogger
}
type AllLogger interface {
CommonLogger
ControlLogger
WithLogger
}
Mencetak Log
Catatan: Memanggil metode pada tingkat Fatal
akan menghentikan eksekusi program setelah mencetak log. Harap gunakan dengan hati-hati. Mencetak log langsung pada tingkatan yang berbeda akan dimasukkan ke dalam messageKey
dan secara default diatur ke msg
.
log.Info("Halo, Dunia!")
log.Debug("Apakah kamu baik?")
log.Info("42 adalah jawaban atas kehidupan, alam semesta, dan segala-galanya")
log.Warn("Kita sedang diserang!")
log.Error("Houston, kita memiliki masalah.")
log.Fatal("Selamat Tinggal dan Terima Kasih untuk Semua Ikan")
log.Panic("Sistem sedang down.")
Memformat dan mencetak log pada tingkatan yang berbeda, semua metode diakhiri dengan f
.
log.Debugf("Halo %s", "teman")
log.Infof("%d adalah jawaban atas kehidupan, alam semesta, dan segala-galanya", 233)
log.Warnf("Kita sedang diserang %s!", "bos")
log.Errorf("%s, kita memiliki masalah.", "Master Shifu")
log.Fatalf("Selamat Tinggal dan Terima Kasih untuk Semua %s.", "buah-buahan")
Mencetak pesan dengan kunci dan nilai. Jika kunci dan nilai tidak dipasangkan, KEYVALS UNPAIRED
akan dicetak.
log.Debugw("", "Halo", "teman")
log.Infow("", "angka", 233)
log.Warnw("", "pekerjaan", "bos")
log.Errorw("", "nama", "Master Shifu")
log.Fatalw("", "buah", "buah-buahan")
Log Global
Jika Anda hanya ingin menggunakan fungsi log sederhana dalam sebuah proyek dan mencetaknya secara global kapan saja, kami menyediakan log global.
import "github.com/gofiber/fiber/v2/log"
log.Info("info")
log.Warn("peringatan")
Kode di atas menggunakan log.DefaultLogger
default untuk output standar. Anda juga dapat menemukan adapter yang sudah diimplementasikan di folder contrib
, atau menggunakan Logger
yang sudah Anda implementasikan sendiri dan atur logger global menggunakan log.SetLogger
.
import (
"log"
fiberlog "github.com/gofiber/fiber/v2/log"
)
var _ log.AllLogger = (*customLogger)(nil)
type customLogger struct {
stdlog *log.Logger
}
// ...
// Suntikkan logger kustom
fiberlog.SetLogger(customLogger)
Set Tingkatan
log.SetLevel
mengatur tingkatan log yang lebih rendah dari tingkatan ini dan tidak akan dicetak. Perekam log default adalah LevelTrace
.
Harap dicatat bahwa metode ini tidak aman untuk konkurensi.
import "github.com/gofiber/fiber/v2/log"
log.SetLevel(log.LevelInfo)
Set Output
log.SetOutput
mengatur tujuan output untuk logging. Secara default, logger mencetak log ke konsol.
var logger AllLogger = &defaultLogger{
stdlog: log.New(os.Stderr, "", log.LstdFlags|log.Lshortfile|log.Lmicroseconds),
depth: 4,
}
Atur tujuan output ke file.
// Output ke file 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)
Atur tujuan output ke konsol dan file sekaligus.
// Output ke file 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)
Ikatan Konteks
Tetapkan konteks, dan gunakan metode berikut untuk mengembalikan instansi CommonLogger
yang terikat ke konteks yang spesifik.
commonLogger := log.WithContext(ctx)
commonLogger.Info("info")
Catatan: Ini adalah pustaka logging default untuk framework Fiber. Tentu saja, Anda dapat memilih pustaka logging open-source Go lain yang terkenal.