0Pricing
Go Academy · Ders

Günlük Düzeyleri ve Öznitelikler

Günlüklere bağlam ekleyin

Günlük Düzeyleri ve Öznitelikler, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Günlüklere Bağlam Ekleme

Tek başına bir ileti ne olduğunu anlatır; öznitelikler ise günlükleri eyleme geçirilebilir kılan ayrıntıları belirtir: hangi kullanıcı, hangi istek, ne kadar sürdü.

Dört Düzey

slog düzeyleri, önem derecesi düşükten yükseğe:

  • Debug (-4)
  • Info (0)
  • Warn (4)
  • Error (8)

Düzeyler tamsayı olduğundan aralarına özel düzeyler tanımlayabilirsiniz.

Düzeye Göre Süzme

HandlerOptions içinde bir en düşük düzey belirleyin. Bunun altındaki kayıtlar düşük maliyetle atılır.

package main

import (
    "log/slog"
    "os"
)

func main() {
    opts := &slog.HandlerOptions{Level: slog.LevelWarn}
    logger := slog.New(slog.NewTextHandler(os.Stdout, opts))
    logger.Info("ignored")
    logger.Warn("shown")
}

Türü Belirlenmiş Öznitelikler

Gevşek anahtar-değer bağımsız değişkenlerinin yanı sıra slog, hataları önleyen ve daha hızlı çalışan, türü belirlenmiş oluşturucular da sunar:

  • slog.String("k", v)
  • slog.Int("k", v)
  • slog.Bool("k", v)
  • slog.Duration("k", d)
slog.Info("done", slog.String("phase", "build"), slog.Int("files", 12))

Türü Belirlenmiş Öznitelikler Neden Kullanılır

Türü belirlenmiş öznitelikler, "tek sayıda bağımsız değişken" hatasını derleme zamanında yakalar ve işleyicinin yansıtmayı atlamasını sağlar. Yoğun kullanılan yollarda bunları tercih edin.

Öznitelikleri Gruplama

slog.Group, ilişkili alanları tek bir anahtar altında iç içe yerleştirir.

slog.Info("req",
    slog.Group("http",
        slog.String("method", "GET"),
        slog.Int("status", 200),
    ),
)

Paylaşılan Bağlam için Logger.With

logger.With(...), her iletiye aynı öznitelikleri ekleyen bir alt günlükleyici döndürür. Bir istek ID'si için mükemmeldir.

reqLog := logger.With("requestID", "abc-123")
reqLog.Info("started")
reqLog.Info("finished")

Bağlamın Farkında Olan Günlükleme

*Context türevleri (örneğin InfoContext), bir context.Context taşır ve işleyicilerin izleme ID'lerini çıkarmasını sağlar.

slog.InfoContext(ctx, "handling", "path", "/api")

Dinamik Düzeyler

Çalışan programı yeniden başlatmadan düzeyi çalışma zamanında değiştirmek için bir slog.LevelVar kullanın (örneğin bir olayı incelerken Debug düzeyine yükseltin).

var lvl slog.LevelVar
lvl.Set(slog.LevelInfo)
h := slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: &lvl})
// later: lvl.Set(slog.LevelDebug)

Öznitelik Olarak Hatalar

Hataları iletiye birleştirmek yerine öznitelik olarak ekleyin; böylece sorgulanabilir olurlar.

slog.Error("save failed", slog.String("err", err.Error()), slog.Int("retry", 2))

Çalıştırılabilir: Düzeyler ve With

Bu program düzeye göre süzer ve paylaşılan bağlama sahip bir alt günlükleyici kullanır.

package main

import (
    "log/slog"
    "os"
)

func main() {
    opts := &slog.HandlerOptions{Level: slog.LevelInfo}
    base := slog.New(slog.NewTextHandler(os.Stdout, opts))
    req := base.With("requestID", "r-7")
    req.Debug("hidden")
    req.Info("processing", slog.Int("items", 3))
}

Hızlı Kontrol

Düzeyler ve öznitelikler konusundaki anlayışınızı sınayın.

Özet

Düzeyleri ve öznitelikleri öğrendiniz:

  • Dört yerleşik düzey vardır; HandlerOptions.Level ile süzün
  • Türü belirlenmiş öznitelikler (slog.String, slog.Int) daha güvenli ve hızlıdır
  • slog.Group alanları iç içe yerleştirir; logger.With bağlamı paylaşır
  • LevelVar, çalışma zamanında düzey değişikliklerini mümkün kılar

Sıkça Sorulan Sorular

“Günlük Düzeyleri ve Öznitelikler” dersi ücretsiz mi?

Evet — “Günlük Düzeyleri ve Öznitelikler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“Günlük Düzeyleri ve Öznitelikler” dersinde ne öğreneceğim?

Günlüklere bağlam ekleyin Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Günlük Düzeyleri ve Öznitelikler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yapılandırılmış Günlükler Neden Kullanılır
  2. slog İşleyicileri
  3. Günlük Düzeyleri ve Öznitelikler
  4. Özel İşleyiciler
← Go Academy Sayfasına Dön