Jadual Kandungan
Kandungan soalan
解决方法
Rumah pembangunan bahagian belakang Golang Adakah mungkin untuk mengemas kini tahap log logger zap pada masa jalan?

Adakah mungkin untuk mengemas kini tahap log logger zap pada masa jalan?

Feb 08, 2024 pm 11:20 PM
overflow

是否可以在运行时更新 zap 记录器的日志级别?

Ini adalah keperluan biasa bagi editor PHP Xigua untuk mengemas kini tahap log perakam zap semasa masa jalan. zap ialah alat pengelogan yang berkuasa yang boleh membantu kami menangkap dan merekod maklumat yang sedang berjalan aplikasi. Biasanya, kita perlu menetapkan tahap log zap apabila aplikasi dimulakan, tetapi kadangkala kita mahu dapat mengemas kini tahap log secara dinamik semasa masa jalan untuk melaraskannya mengikut keperluan sebenar. Dalam zap, kita boleh mencapai fungsi ini dengan menggunakan kaedah yang disediakan oleh antara muka Logger zap. Khususnya, kita boleh menggunakan `zap.Info()`, `zap.Debug()`, `zap.Warn()` dan kaedah lain untuk mengemas kini tahap log secara dinamik. Dengan cara ini, kami boleh melaraskan gelagat pengelogan zap secara fleksibel pada masa jalan mengikut keperluan.

Kandungan soalan

Saya mencipta pembalak menggunakan kubebuilder yang berdasarkan pada logger zap:

import (
    "flag"
    "github.com/gin-gonic/gin"
    "net/http"
    "os"
    "go.uber.org/zap/zapcore"
    uzap "go.uber.org/zap"
    // Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.)
    // to ensure that exec-entrypoint and run can make use of them.
    _ "k8s.io/client-go/plugin/pkg/client/auth"

    "k8s.io/apimachinery/pkg/runtime"
    utilruntime "k8s.io/apimachinery/pkg/util/runtime"
    clientgoscheme "k8s.io/client-go/kubernetes/scheme"
    ctrl "sigs.k8s.io/controller-runtime"
    "sigs.k8s.io/controller-runtime/pkg/healthz"
    "sigs.k8s.io/controller-runtime/pkg/log/zap"

)

var (
    scheme   = runtime.NewScheme()
    setupLog = ctrl.Log.WithName("setup")
)

var zapOpts []uzap.Option
    zapOpts = append(zapOpts, uzap.AddCaller())
    zapOpts = append(zapOpts, uzap.AddCallerSkip(1))
    zapOpts = append(zapOpts, uzap.AddStacktrace(uzap.DebugLevel))

    opts := zap.Options{
        Development:     developmentFlag,
        StacktraceLevel: stacktraceLevel,
        Level:           level,
        Encoder:         encoder,
        ZapOpts:  zapOpts,
    }

    opts.BindFlags(flag.CommandLine)
    flag.Parse()

    ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
Salin selepas log masuk

Sekarang saya mahu menukar tahap log semasa runtime kepada zapcore.infolevel 。我没有找到任何 setloglevel atau api yang serupa.

Adakah saya perlu membuat pilihan baharu dan kemudian menetapkan tahap baharu?

Saya juga perlu menyediakan pembalak menggunakan sigs.k8s.io/controller-runtime/pkg/log/zap 库设置记录器。记录器的接口来自go-logr,它实现了logr.logger接口。如果我尝试将其更改为 zapcore.newcore ,我将无法再使用 ctrl.setlogger.

Saya mahu menyimpan zap daripada kemas kini zap.options 的所有选项的选项,并更改日志级别,并且仍然使用 sigs.k8s.io/controller-runtime/pkg/log/zap.

Adakah mungkin untuk melakukan ini? sigs.k8s.io/controller-runtime/pkg/log/zap dan sigs.k8s.io/controller-runtime? . /kod>. Lihat jawapan mereka untuk butiran. sigs.k8s.io/controller-runtime

解决方法

更好的答案:按照@oliver dain的建议,使用 zap.atomiclevel

Pilihan lain ialah menggunakan tersuai

levelenabler 函数创建核心。您可以使用 zap.levelenablerfunc 将闭包转换为 zapcore.levelenabler.

Dokumen berkaitan:

levelenabler menentukan sama ada tahap pengelogan tertentu didayakan semasa mengelog mesej.

levelenablerfunc ialah cara mudah untuk melaksanakan zapcore.levelenabler menggunakan fungsi tanpa nama.

Fungsi mungkin kembali

: truefalse berdasarkan pembolehubah lain yang berubah semasa masa jalan

// will be actually initialized and changed at run time 
    // based on your business logic
    var infoEnabled bool 

    errorUnlessEnabled := zap.LevelEnablerFunc(func(level zapcore.Level) bool {
        // true: log message at this level
        // false: skip message at this level
        return level >= zapcore.ErrorLevel || infoEnabled
    })

    core := zapcore.NewCore(
        zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()),
        os.Stdout,
        errorUnlessEnabled,
    )
    logger := zap.New(core)

    logger.Info("foo") // not logged
    
    infoEnabled = true

    logger.Info("foo again") // logged
Salin selepas log masuk
ps: Kod ini adalah tiruan. Program anda mesti melaksanakan pemulaan, perubahan nilai masa jalan dan penyegerakan yang betul (jika perlu) pada

pembolehubah. infoenabled

Anda boleh menjalankan contoh ini di taman permainan:

https://play.golang.org/p/ot3nvnp1bwc

Atas ialah kandungan terperinci Adakah mungkin untuk mengemas kini tahap log logger zap pada masa jalan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Harga Bitcoin sejak kelahirannya 2009-2025 Ringkasan paling lengkap harga sejarah BTC Harga Bitcoin sejak kelahirannya 2009-2025 Ringkasan paling lengkap harga sejarah BTC Jan 15, 2025 pm 08:11 PM

Sejak penubuhannya pada tahun 2009, Bitcoin telah menjadi peneraju dalam dunia mata wang kripto dan harganya telah mengalami turun naik yang besar. Untuk memberikan gambaran keseluruhan sejarah yang komprehensif, artikel ini menyusun data harga Bitcoin dari 2009 hingga 2025, meliputi peristiwa pasaran utama, perubahan dalam sentimen pasaran dan faktor penting yang mempengaruhi pergerakan harga.

Perkara yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang_Apa yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang Perkara yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang_Apa yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang May 06, 2024 pm 01:20 PM

1. Mula-mula, klik kanan pada ruang kosong bar tugas di bahagian bawah Windows 11 dan pilih [Taskbar Settings]. 2. Cari [taskbarcorneroverflow] di sebelah kanan dalam tetapan bar tugas. 3. Kemudian cari [jam] atau [Jam] di atasnya dan pilih untuk menghidupkannya. Kaedah 2: 1. Tekan pintasan papan kekunci [win+r] untuk memanggil larian, masukkan [regedit] dan tekan Enter untuk mengesahkan. 2. Buka editor pendaftaran, cari [HKEY_CURRENT_USERControlPanel] di dalamnya dan padamkannya. 3. Selepas memadam, mulakan semula komputer dan anda akan digesa untuk konfigurasi Apabila anda kembali ke sistem, masa akan dipaparkan.

Adakah terdapat forum komuniti atau kumpulan perbincangan untuk fungsi Java di mana saya boleh bertanya dan membincangkannya? Adakah terdapat forum komuniti atau kumpulan perbincangan untuk fungsi Java di mana saya boleh bertanya dan membincangkannya? Apr 28, 2024 pm 02:12 PM

Jawapan: Forum komuniti dan kumpulan perbincangan berikut tersedia untuk soalan pengaturcaraan fungsi Java: StackOverflow: Tapak web Soal Jawab pengaturcaraan terbesar di dunia dengan komuniti pakar pengaturcaraan fungsi Java. JavaFunctionalProgramming: Forum komuniti yang memfokuskan pada pengaturcaraan berfungsi Java, menyediakan perbincangan tentang konsep, ciri bahasa dan amalan terbaik. Redditr/functionaljava: Subreddit memfokuskan pada pengaturcaraan Java berfungsi, memfokuskan pada alatan, perpustakaan dan teknologi. Discord: JavaFunctional Programming: Perkhidmatan Discord yang menyediakan perbincangan masa nyata, perkongsian kod dan kerjasama

Bagaimana untuk menggunakan kod orang lain dalam python Bagaimana untuk menggunakan kod orang lain dalam python May 05, 2024 pm 07:54 PM

Bagaimanakah saya menggunakan kod Python orang lain? Cari repositori kod: Cari kod yang anda perlukan pada platform seperti PyPI dan GitHub. Kod pemasangan: Gunakan pip atau klon repositori GitHub untuk memasang. Import modul: Gunakan pernyataan import dalam skrip anda untuk mengimport modul yang dipasang. Bekerja dengan kod: Akses fungsi dan kelas dalam modul. (Pilihan) Sesuaikan kod: Ubah suai kod mengikut keperluan agar sesuai dengan projek anda.

Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Bagaimana untuk melaraskan masa yang salah pada komputer Windows 11 Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Bagaimana untuk melaraskan masa yang salah pada komputer Windows 11 May 03, 2024 pm 09:20 PM

Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Kita semua menetapkan masa atau kalendar apabila menggunakan sistem win11, tetapi ramai pengguna bertanya bahawa masa komputer sentiasa salah, jadi apa yang berlaku? Pengguna boleh terus mengklik pada bar tugas di bawah, dan kemudian mencari taskbarcorneroverflow untuk menyediakannya. Biarkan tapak ini memperkenalkan kepada pengguna secara terperinci cara melaraskan ralat masa pada komputer Win11. Cara melaraskan masa yang salah pada komputer Windows 11 Kaedah 1: 1. Mula-mula kita klik kanan pada ruang kosong bar tugas di bawah dan pilih Tetapan Bar Tugas. Kaedah 2: 1. Tekan pintasan papan kekunci win+r untuk memanggil run, masukkan regedit dan tekan Enter untuk mengesahkan.

Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java May 03, 2024 pm 02:09 PM

Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java Semasa pembangunan fungsi Java, pelbagai pengecualian mungkin ditemui, yang menjejaskan pelaksanaan fungsi yang betul. Berikut ialah jenis pengecualian biasa dan langkah pembaikannya: 1. Perihalan NullPointerException: Dilemparkan apabila mengakses objek yang belum dimulakan. Betulkan: Pastikan anda menyemak objek untuk bukan nol sebelum menggunakannya. Contoh kod: cuba{Stringname=null;System.out.println(name.length());}catch(NullPointerExceptione){

Apakah maksud limpahan dalam css Apakah maksud limpahan dalam css Apr 28, 2024 pm 03:15 PM

limpahan ialah sifat CSS yang digunakan untuk mengawal mod paparan kandungan elemen apabila ia melebihi bekas Nilai yang tersedia termasuk: kelihatan: kandungan kelihatan, bekas limpahan tersembunyi: kandungan limpahan dipotong tatal: yang. bar skrol dipaparkan untuk melihat kandungan limpahan auto: penyemak imbas secara automatik menentukan Sama ada untuk memaparkan bar skrol mewarisi: mewarisi atribut limpahan elemen induk

Adakah tiada sesiapa yang menjaga akaun rawak Douyin? Bolehkah saya membuat rayuan untuk kali kedua? Adakah tiada sesiapa yang menjaga akaun rawak Douyin? Bolehkah saya membuat rayuan untuk kali kedua? May 03, 2024 am 09:37 AM

Sebagai platform video pendek yang terkenal di dunia, Douyin mempunyai pangkalan pengguna dan pencipta kandungan yang besar. Walau bagaimanapun, memandangkan peraturan platform sentiasa dikemas kini dan dipertingkatkan, sesetengah pengguna mungkin menghadapi larangan akaun. Ini telah menimbulkan persoalan umum tentang ketelusan dan keadilan pengurusan platform. Artikel ini akan membincangkan isu larangan akaun Douyin dan sama ada pengguna mempunyai cara untuk merayu selepas akaun mereka diharamkan. Mungkin terdapat banyak sebab untuk diharamkan pada platform Douyin, termasuk tetapi tidak terhad kepada kandungan haram, pelanggaran peraturan platform, pelanggaran hak orang lain, dsb. Untuk mengekalkan susunan platform dan kepentingan pengguna, Douyin telah menyediakan satu siri peraturan dan mekanisme semakan. Apabila sesetengah pengguna melanggar peraturan, akaun mereka mungkin diharamkan. Walau bagaimanapun, sesetengah pengguna mungkin mempersoalkan atau tidak berpuas hati dengan sebab larangan tersebut

See all articles