Go Academy · Ders

slog İşleyicileri

Metin ve JSON işleyicileri

2. ders / 413 adım

slog İşleyicileri, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 2. 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.

İşleyiciler Biçimi Belirler

slog'da bir günlükleyici, her kaydı biçimlendirmek ve yazmak için bir işleyici çağırır. İşleyiciyi değiştirmek, günlük çağrılarınızın hiçbirine dokunmadan çıktı biçimini değiştirir.

TextHandler

slog.NewTextHandler, insanların okuyabileceği key=value satırları yazar. Yerel geliştirme ve uçbirimler için uygundur.

package main

import (
    "log/slog"
    "os"
)

func main() {
    h := slog.NewTextHandler(os.Stdout, nil)
    logger := slog.New(h)
    logger.Info("hello", "env", "dev")
}

JSONHandler

slog.NewJSONHandler, her satıra bir JSON nesnesi yazar. Üretim günlük işlem hatları için idealdir.

package main

import (
    "log/slog"
    "os"
)

func main() {
    h := slog.NewJSONHandler(os.Stdout, nil)
    logger := slog.New(h)
    logger.Info("hello", "env", "prod")
}

Günlükleyici Oluşturma

slog.New(handler), bir işleyiciyi bir günlükleyiciye sarar. Bu örnekte logger.Info, logger.Error ve benzerlerini çağırırsınız.

logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))

HandlerOptions

Bir işleyici oluşturucusunun ikinci bağımsız değişkeni *slog.HandlerOptions değeridir. Varsayılanlar için nil aktarın veya düzeyi ve kaynak konumunu yapılandırın.

opts := &slog.HandlerOptions{
    Level:     slog.LevelDebug,
    AddSource: true,
}
h := slog.NewJSONHandler(os.Stdout, opts)

Bir Dosyaya veya Tampona Yazma

İşleyiciler herhangi bir io.Writer kabul eder. Günlükleri bir dosyaya, sınamalar için bir tampona veya standart çıktıya yazabilirsiniz. Bu ayrıştırma, slog tasarımının temel noktalarından biridir.

f, _ := os.Create("app.log")
logger := slog.New(slog.NewJSONHandler(f, nil))

Varsayılan Günlükleyiciyi Ayarlama

slog.SetDefault(logger), paket düzeyindeki işlevlerin (slog.Info vb.) sizin işleyicinizi kullanmasını sağlar. Bunu başlangıçta bir kez ayarlayın.

slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stdout, nil)))
slog.Info("now JSON by default")

Metin ve JSON Çıktısı

Aynı çağrı, iki biçim:

  • Metin: time=... level=INFO msg=hello env=dev
  • JSON: {"time":"...","level":"INFO","msg":"hello","env":"dev"}

İşleyici Seçme

Genel kural:

  • Yerel/geliştirme: TextHandler (okunabilir)
  • Üretim/toplulaştırılmış: JSONHandler (ayrıştırılabilir)

Aynı ikili dosyanın koşullara uyum sağlaması için seçimi bir ortam değişkeniyle yapın.

Yeniden Kullanılabilir Bir Kurulum Yazma

Günlükleyici oluşturmayı merkezileştirin; böylece uygulamanın tamamı tek bir yapılandırmayı paylaşır.

func newLogger(prod bool) *slog.Logger {
    if prod {
        return slog.New(slog.NewJSONHandler(os.Stdout, nil))
    }
    return slog.New(slog.NewTextHandler(os.Stdout, nil))
}

Çalıştırılabilir: İşleyicileri Değiştirme

Bu program, biçimleri karşılaştırabilmeniz için aynı olayı her iki işleyici üzerinden günlüğe yazar.

package main

import (
    "log/slog"
    "os"
)

func main() {
    text := slog.New(slog.NewTextHandler(os.Stdout, nil))
    js := slog.New(slog.NewJSONHandler(os.Stdout, nil))
    text.Info("login", "user", "ada")
    js.Info("login", "user", "ada")
}

Hızlı Kontrol

slog işleyicileri konusundaki anlayışınızı sınayın.

Özet

slog işleyicileri hakkında şunları öğrendiniz:

  • İşleyiciler kayıtları biçimlendirip yazar; günlükleyici onları çağırır
  • İnsanlar için NewTextHandler, makineler için NewJSONHandler
  • İşleyiciler herhangi bir io.Writer ve *HandlerOptions kabul eder
  • slog.SetDefault, paket düzeyindeki işlevleri bağlar
Başlamak ücretsiz

Yapay zeka eğitmeniyle Go öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“slog İşleyicileri” dersi ücretsiz mi?

Evet — “slog İşleyicileri” 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.

“slog İşleyicileri” dersinde ne öğreneceğim?

Metin ve JSON işleyicileri 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 2. dersidir.

“slog İşleyicileri” 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