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
)