Go Academy · Pelajaran

Level Log dan Atribut

Tambahkan konteks ke log

Pelajaran 3 dari 413 langkah

Level Log dan Atribut adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Menambahkan Konteks ke Log

Pesan sederhana memberi tahu Anda apa yang terjadi; atribut memberi tahu detail yang membuat log dapat ditindaklanjuti: pengguna mana, permintaan mana, dan berapa lama prosesnya.

Empat Level

Level slog, dari tingkat keparahan terendah hingga tertinggi:

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

Level berupa bilangan bulat, jadi Anda dapat menentukan level khusus di antaranya.

Menyaring berdasarkan Tingkat

Atur tingkat minimum dalam HandlerOptions. Rekaman di bawah tingkat tersebut dibuang dengan biaya pemrosesan yang kecil.

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")
}

Atribut Bertipe

Selain argumen kunci-nilai yang tidak bertipe, slog menyediakan konstruktor bertipe yang menghindari kesalahan dan bekerja lebih cepat:

  • 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))

Mengapa Attrs Bertipe

Attrs bertipe mendeteksi bug "jumlah argumen ganjil" saat kompilasi dan memungkinkan penangan melewati refleksi. Utamakan penggunaannya pada jalur yang sering dijalankan.

Mengelompokkan Atribut

slog.Group menempatkan bidang-bidang terkait di bawah satu kunci.

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

Logger.With untuk Konteks Bersama

logger.With(...) mengembalikan pencatat turunan yang melampirkan atribut yang sama ke setiap pesan. Sangat cocok untuk ID permintaan.

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

Pencatatan Sadar Konteks

Varian *Context (misalnya InfoContext) membawa context.Context, sehingga penangan dapat mengambil ID pelacakan.

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

Level Dinamis

Gunakan slog.LevelVar untuk mengubah level saat program berjalan (misalnya menaikkannya ke Debug saat menyelidiki insiden) tanpa memulai ulang.

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

Kesalahan sebagai Atribut

Sematkan kesalahan sebagai atribut agar dapat ditelusuri melalui kueri, bukan menggabungkannya ke dalam pesan.

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

Dapat Dijalankan: Level dan With

Program ini menyaring berdasarkan level dan menggunakan pencatat turunan dengan konteks bersama.

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))
}

Uji Cepat

Uji pemahaman Anda tentang level dan atribut.

Ringkasan

Anda telah mempelajari level dan atribut:

  • Empat level bawaan; lakukan penyaringan dengan HandlerOptions.Level
  • Attrs bertipe (slog.String, slog.Int) lebih aman dan cepat
  • slog.Group menempatkan bidang secara bertingkat; logger.With membagikan konteks
  • LevelVar memungkinkan perubahan level saat program berjalan
Gratis untuk memulai

Belajar Go dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Level Log dan Atribut” gratis?

Ya — teks lengkap “Level Log dan Atribut” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Level Log dan Atribut”?

Tambahkan konteks ke log Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Level Log dan Atribut” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Logging Terstruktur
  2. Handler slog
  3. Level Log dan Atribut
  4. Handler Kustom
← Kembali ke Go Academy