Level Log dan Atribut
Tambahkan konteks ke log
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.Groupmenempatkan bidang secara bertingkat;logger.Withmembagikan konteksLevelVarmemungkinkan perubahan level saat program berjalan
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
- Mengapa Logging Terstruktur
- Handler slog
- Level Log dan Atribut
- Handler Kustom