Pencatat
Sebuah middleware untuk Fiber yang digunakan untuk mencatat informasi detail tentang permintaan dan tanggapan HTTP.
Antarmuka
func New(config ...Config) fiber.Handler
Contoh
Impor paket middleware dari kerangka kerja web Fiber:
impor (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
)
Catatan: Urutan registrasi penting. Hanya rute yang terdaftar setelah middleware ini yang akan dicatat. Oleh karena itu, middleware ini harus menjadi salah satu yang pertama yang didaftarkan.
Setelah menginisialisasi aplikasi Fiber, dapat mendaftarkan middleware dengan cara berikut:
// Inisialisasi dengan konfigurasi default
app.Use(logger.New())
// Atau sesuaikan konfigurasinya
// Catat alamat IP dan port remote
app.Use(logger.New(logger.Config{
Format: "[${ip}]:${port} ${status} - ${method} ${path}\n",
}))
// Catat ID permintaan
app.Use(requestid.New())
app.Use(logger.New(logger.Config{
// Untuk opsi lebih lanjut, lihat bagian Config
Format: "${pid} ${locals:requestid} ${status} - ${method} ${path}\n",
}))
// Ubah zona waktu dan format waktu
app.Use(logger.New(logger.Config{
Format: "${pid} ${status} - ${method} ${path}\n",
TimeFormat: "02-Jan-2006",
TimeZone: "America/New_York",
}))
// Penulis file kustom
file, err := os.OpenFile("./123.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("error opening file: %v", err)
}
defer file.Close()
app.Use(logger.New(logger.Config{
Output: file,
}))
// Tambahkan tag kustom
app.Use(logger.New(logger.Config{
CustomTags: map[string]logger.LogFunc{
"custom_tag": func(output logger.Buffer, c *fiber.Ctx, data *logger.Data, extraParam string) (int, error) {
return output.WriteString("Ini adalah tag kustom")
},
},
}))
// Fungsi panggilan kembali setelah mencatat
app.Use(logger.New(logger.Config{
TimeFormat: time.RFC3339Nano,
TimeZone: "Asia/Shanghai",
Done: func(c *fiber.Ctx, logString []byte) {
if c.Response().StatusCode() != fiber.StatusOK {
reporter.SendToSlack(logString)
}
},
}))
// Nonaktifkan warna saat mencetak dalam format default
app.Use(logger.New(logger.Config{
DisableColors: true,
}))
Konfigurasi
Properti | Tipe | Deskripsi | Nilai Default |
---|---|---|---|
Next | func(*fiber.Ctx) bool |
Next mendefinisikan sebuah fungsi yang mengabaikan middleware saat mengembalikan nilai true. | nil |
Done | func(*fiber.Ctx, []byte) |
Done adalah fungsi yang dipanggil setelah menulis string log permintaan ke Output, dengan string log yang dilewatkan sebagai parameter. | nil |
CustomTags | map[string]LogFunc |
tagFunctions mendefinisikan operasi tag kustom. | map[string]LogFunc |
Format | string |
Format mendefinisikan tag log. | [${time}] ${status} - ${latency} ${method} ${path}\n |
TimeFormat | string |
TimeFormat mendefinisikan format waktu cap waktu log. | 15:04:05 |
TimeZone | string |
TimeZone dapat ditentukan sebagai "UTC", "America/New_York", "Asia/Chongqing", dll. | "Local" |
TimeInterval | time.Duration |
TimeInterval adalah waktu penundaan sebelum memperbarui cap waktu. | 500 * time.Millisecond |
Output | io.Writer |
Output adalah penulis yang digunakan untuk menulis log. | os.Stdout |
DisableColors | bool |
DisableColors mendefinisikan apakah output log harus berwarna. | false |
enableColors | bool |
Bidang internal untuk mengaktifkan warna dalam output log. (Ini bukan bidang yang dapat dikonfigurasi) | - |
enableLatency | bool |
Bidang internal untuk mengaktifkan pengukuran laten di log. (Ini bukan bidang yang dapat dikonfigurasi) | - |
timeZoneLocation | *time.Location |
Bidang internal untuk lokasi zona waktu. (Ini bukan bidang yang dapat dikonfigurasi) | - |
Konfigurasi Default
var ConfigDefault = Config{
Next: nil,
Done: nil,
Format: "[${time}] ${status} - ${latency} ${method} ${path}\n",
TimeFormat: "15:04:05",
TimeZone: "Local",
TimeInterval: 500 * time.Millisecond,
Output: os.Stdout,
DisableColors: false,
}
Konstanta
// Variabel Logger
const (
TagPid = "pid" // ID Proses
TagTime = "time" // Waktu
TagReferer = "referer" // Pengarah
TagProtocol = "protocol" // Protokol
TagPort = "port" // Port
TagIP = "ip" // Alamat IP
TagIPs = "ips" // Alamat IP
TagHost = "host" // Host
TagMethod = "method" // Metode Permintaan
TagPath = "path" // Jalur
TagURL = "url" // URL
TagUA = "ua" // Agen Pengguna
TagLatency = "latency" // Latensi
TagStatus = "status" // Status Respon
TagResBody = "resBody" // Tubuh Respon
TagReqHeaders = "reqHeaders" // Header Permintaan
TagQueryStringParams = "queryParams" // Parameter Query
TagBody = "body" // Tubuh Permintaan
TagBytesSent = "bytesSent" // Bytes Terkirim
TagBytesReceived = "bytesReceived" // Bytes Diterima
TagRoute = "route" // Rute
TagError = "error" // Error
// Usang: Gunakan TagReqHeader sebagai gantinya
TagHeader = "header:" // Header Permintaan
TagReqHeader = "reqHeader:" // Header Permintaan
TagRespHeader = "respHeader:" // Header Respon
TagQuery = "query:" // Kueri
TagForm = "form:" // Formulir
TagCookie = "cookie:" // Cookie
TagLocals = "locals:" // Variabel Lokal
// Warna
TagBlack = "black" // Hitam
TagRed = "red" // Merah
TagGreen = "green" // Hijau
TagYellow = "yellow" // Kuning
TagBlue = "blue" // Biru
TagMagenta = "magenta" // Magenta
TagCyan = "cyan" // Cyan
TagWhite = "white" // Putih
TagReset = "reset" // Atur Ulang Warna
)