Günlükleyici
Fiber için bir middleware, HTTP istekleri ve yanıtları hakkında detaylı bilgileri kaydetmek için kullanılır.
Arayüz
func New(config ...Config) fiber.Handler
Örnek
Fiber web çatısının middleware paketini içe aktarın:
import (
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/logger"
)
Not: Kayıt sırası önemlidir. Bu middleware'den sonraki sadece kaydedilen rotalar günlüğe kaydedilecektir. Bu nedenle, bu middleware'nin kaydolan ilk middleware'lerden biri olması gerekmektedir.
Fiber uygulamasını başlattıktan sonra, middleware aşağıdaki şekillerde kaydedilebilir:
// Varsayılan yapılandırma ile başlat
app.Use(logger.New())
// veya yapılandırmayı özelleştirin
// Uzak IP ve bağlantı noktasını kaydet
app.Use(logger.New(logger.Config{
Format: "[${ip}]:${port} ${status} - ${method} ${path}\n",
}))
// İstek Kimliğini kaydet
app.Use(requestid.New())
app.Use(logger.New(logger.Config{
// Daha fazla seçenek için Config bölümüne bakın
Format: "${pid} ${locals:requestid} ${status} - ${method} ${path}\n",
}))
// Zaman dilimini ve zaman biçimini değiştirin
app.Use(logger.New(logger.Config{
Format: "${pid} ${status} - ${method} ${path}\n",
TimeFormat: "02-Oca-2006",
TimeZone: "America/New_York",
}))
// Özel dosya yazıcısı
file, err := os.OpenFile("./123.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
log.Fatalf("dosya açılırken hata oluştu: %v", err)
}
defer file.Close()
app.Use(logger.New(logger.Config{
Output: file,
}))
// Özel etiket ekle
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("Bu özel bir etikettir")
},
},
}))
// Günlüğe kaydettikten sonra geri çağırma işlevi
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)
}
},
}))
// Varsayılan biçimde çıktı verildiğinde renkleri devre dışı bırak
app.Use(logger.New(logger.Config{
DisableColors: true,
}))
Yapılandırma
Özellik | Tür | Açıklama | Varsayılan Değer |
---|---|---|---|
Next | func(*fiber.Ctx) bool |
Next, true döndürdüğünde middleware'ı atlayan bir işlevi tanımlar. | nil |
Done | func(*fiber.Ctx, []byte) |
Done, Output'a yazılan isteğin günlük dizgisinin bir parametre olarak iletilmesiyle birlikte çağrılan bir işlevdir. | nil |
CustomTags | map[string]LogFunc |
tagFunctions, özel etiket işlemlerini tanımlar. | map[string]LogFunc |
Format | string |
Format, günlük etiketlerini tanımlar. | [${time}] ${status} - ${latency} ${method} ${path}\n |
TimeFormat | string |
TimeFormat, günlük zaman damgasının zaman biçimini tanımlar. | 15:04:05 |
TimeZone | string |
TimeZone, "UTC", "America/New_York", "Asia/Chongqing" vb. olarak belirtilebilir. | "Yerel" |
TimeInterval | time.Duration |
TimeInterval, zaman damgasını güncellemeden önceki gecikme süresidir. | 500 * time.Millisecond |
Output | io.Writer |
Output, günlükleri yazmak için kullanılan bir yazıcıdır. | os.Stdout |
DisableColors | bool |
DisableColors, günlük çıktısının renklendirilip renklendirilmeyeceğini tanımlar. | false |
enableColors | bool |
Günlük çıktısında renkleri etkinleştirmek için iç alan. (Bu yapılandırılabilir bir alan değildir) | - |
enableLatency | bool |
Günlükte gecikme ölçümünü etkinleştirmek için iç alan. (Bu yapılandırılabilir bir alan değil) | - |
timeZoneLocation | *time.Location |
Zaman dilimi konumu için iç alan. (Bu yapılandırılabilir bir alan değil) | - |
var ConfigDefault = Config{
Next: nil,
Done: nil,
Format: "[${zaman}] ${durum} - ${gecikme} ${method} ${path}\n",
TimeFormat: "15:04:05",
TimeZone: "Yerel",
TimeInterval: 500 * time.Millisecond,
Output: os.Stdout,
DisableColors: false,
}
Sabitler
// Günlük değişkenleri
const (
TagPid = "pid" // İşlem Kimliği
TagTime = "time" // Zaman
TagReferer = "referer" // Yönlendiren
TagProtocol = "protocol" // Protokol
TagPort = "port" // Bağlantı Noktası
TagIP = "ip" // IP Adresi
TagIPs = "ips" // IP Adresleri
TagHost = "host" // Ana Bilgisayar
TagMethod = "method" // İstek Yöntemi
TagPath = "path" // Yol
TagURL = "url" // URL
TagUA = "ua" // Kullanıcı Aracısı
TagLatency = "latency" // Gecikme
TagStatus = "status" // Yanıt Durumu
TagResBody = "resBody" // Yanıt Gövdesi
TagReqHeaders = "reqHeaders" // İstek Başlıkları
TagQueryStringParams = "queryParams" // Sorgu Parametreleri
TagBody = "body" // İstek Gövdesi
TagBytesSent = "bytesSent" // Gönderilen Bayt
TagBytesReceived = "bytesReceived" // Alınan Bayt
TagRoute = "route" // Rota
TagError = "error" // Hata
// Kullanımdan Kaldırılmış: TagReqHeader kullanın
TagHeader = "header:" // İstek Başlığı
TagReqHeader = "reqHeader:" // İstek Başlığı
TagRespHeader = "respHeader:" // Yanıt Başlığı
TagQuery = "query:" // Sorgu
TagForm = "form:" // Form
TagCookie = "cookie:" // Çerez
TagLocals = "locals:" // Yerel Değişkenler
// Renkler
TagBlack = "black" // Siyah
TagRed = "red" // Kırmızı
TagGreen = "green" // Yeşil
TagYellow = "yellow" // Sarı
TagBlue = "blue" // Mavi
TagMagenta = "magenta" // Menekşe
TagCyan = "cyan" // Camgöbeği
TagWhite = "white" // Beyaz
TagReset = "reset" // Rengi Sıfırla
)