Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengemas Kini Tahap Log Secara Dinamik dengan Zap Logger dalam Controller-Rtime?
Zap, perpustakaan pengelogan popular dalam Go, membenarkan kelakuan pengelogan boleh dikonfigurasikan . Dalam kes ini, pembalak dimulakan oleh utiliti kubebuilder, yang menggunakan Zap sebagai mekanisme pembalakan asasnya. Tugas di tangan ialah untuk melaraskan tahap log aplikasi yang sedang berjalan secara dinamik pada masa jalan sambil mengekalkan penggunaan perpustakaan sigs.k8s.io/controller-runtime/pkg/log/zap.
Pustaka sigs.k8s.io/controller-runtime/pkg/log/zap tidak menyediakan API mudah untuk mengemas kini tahap log di masa jalan. Walau bagaimanapun, Zap menawarkan penyelesaian melalui fungsi zap.NewAtomicLevel()nya. Fungsi ini mencipta tahap atom yang boleh ditetapkan secara dinamik pada masa jalanan, seperti yang ditunjukkan dalam coretan kod berikut:
import ( "go.uber.org/zap" "go.uber.org/zap/zapcore" ) func main() { // Create an atomic level. atom := zap.NewAtomicLevel() // Configure the logger with the atomic level. logger := zap.New(zapcore.NewCore( zapcore.NewJSONEncoder(zapcore.NewProductionEncoderConfig()), zapcore.Lock(os.Stdout), atom, )) // Set initial log level. atom.SetLevel(zapcore.InfoLevel) // Log a message at the set level. logger.Info("Info message") // Change the log level at runtime. atom.SetLevel(zapcore.ErrorLevel) // Log another message at the new level. logger.Info("Info message after level change") }
Untuk melaksanakan penyelesaian ini dalam konteks controller-runtime, gantikan panggilan ctrl.SetLogger sedia ada dengan yang berikut diubah suai kod:
// Initialize the atomic level. atom := zap.NewAtomicLevel() // Configure the logger with the atomic level. logger := zap.New(zapcore.NewCore( zapcore.NewJSONEncoder(zapcore.NewProductionEncoderConfig()), zapcore.Lock(os.Stdout), atom, )) // Bind the flags to the options. opts.BindFlags(flag.CommandLine) flag.Parse() // Set the logger with the modified options and atomic level. ctrl.SetLogger(logger, opts)
Pengubahsuaian ini memastikan bahawa logger yang dimulakan oleh kubebuilder menggunakan tahap atom, membolehkan anda mengemas kini tahap log secara dinamik pada masa jalan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas Kini Tahap Log Secara Dinamik dengan Zap Logger dalam Controller-Rtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!