Inhaltsverzeichnis
Frageninhalt
解决方法
Heim Backend-Entwicklung Golang Ist es möglich, die Protokollebene des Zap-Loggers zur Laufzeit zu aktualisieren?

Ist es möglich, die Protokollebene des Zap-Loggers zur Laufzeit zu aktualisieren?

Feb 08, 2024 pm 11:20 PM
overflow

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

Es ist eine häufige Anforderung für den PHP-Editor Xigua, die Protokollebene des Zap-Recorders zur Laufzeit zu aktualisieren. zap ist ein leistungsstarkes Protokollierungstool, mit dem wir Informationen zur Anwendungsausführung erfassen und aufzeichnen können. Normalerweise müssen wir die Protokollebene von zap festlegen, wenn die Anwendung gestartet wird. Manchmal möchten wir jedoch die Protokollebene zur Laufzeit dynamisch aktualisieren können, um sie an die tatsächlichen Anforderungen anzupassen. In Zap können wir diese Funktion erreichen, indem wir die Methoden verwenden, die von der Logger-Schnittstelle von Zap bereitgestellt werden. Konkret können wir „zap.Info()“, „zap.Debug()“, „zap.Warn()“ und andere Methoden verwenden, um die Protokollebene dynamisch zu aktualisieren. Auf diese Weise können wir das Protokollierungsverhalten von zap zur Laufzeit je nach Bedarf flexibel anpassen.

Frageninhalt

Ich habe mit kubebuilder einen Logger erstellt, der auf dem Zap-Logger basiert:

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)))
Nach dem Login kopieren

Jetzt möchte ich die Protokollebene zur Laufzeit auf zapcore.infolevel 。我没有找到任何 setloglevel oder eine ähnliche API ändern.

Muss ich neue Optionen erstellen und dann neue Ebenen festlegen?

Ich muss den Logger auch mit sigs.k8s.io/controller-runtime/pkg/log/zap 库设置记录器。记录器的接口来自go-logr,它实现了logr.logger接口。如果我尝试将其更改为 zapcore.newcore ,我将无法再使用 ctrl.setlogger einrichten.

Ich möchte den Zap von Updates fernhalten zap.options 的所有选项的选项,并更改日志级别,并且仍然使用 sigs.k8s.io/controller-runtime/pkg/log/zap.

Ist das möglich? sigs.k8s.io/controller-runtime/pkg/log/zap und sigs.k8s.io/controller-runtime? sigs.k8s.io/controller-runtime

解决方法

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

Workaround

levelenabler 函数创建核心。您可以使用 zap.levelenablerfunc 将闭包转换为 zapcore.levelenablerBessere Antwort: Befolgen Sie den Vorschlag von @oliver dain und verwenden Sie zap.atomiclevel< /code>. Einzelheiten finden Sie in den Antworten. </p> <p>Eine andere Möglichkeit besteht darin, benutzerdefinierte </p><p> zu verwenden. </p> <p>Zugehörige Dokumente: </p> <p>levelenabler bestimmt, ob eine bestimmte Protokollierungsstufe beim Protokollieren von Nachrichten aktiviert ist. <code>truefalse

levelenablerfunc ist eine praktische Möglichkeit, zapcore.levelenabler mithilfe einer anonymen Funktion zu implementieren.

infoenabledDie Funktion kann

Folgendes zurückgeben:

basierend auf anderen Variablen, die sich während der Laufzeit ändern

// 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
Nach dem Login kopieren
ps: Dieser Code ist künstlich. Ihr Programm muss die Initialisierung, Laufzeitwertänderungen und eine ordnungsgemäße Synchronisierung (falls erforderlich) für -Variablen implementieren. 🎜Sie können dieses Beispiel auf dem Spielplatz ausführen: 🎜https://play.golang.org/p/ot3nvnp1bwc🎜🎜

Das obige ist der detaillierte Inhalt vonIst es möglich, die Protokollebene des Zap-Loggers zur Laufzeit zu aktualisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Preis von Bitcoin seit seiner Geburt 2009–2025. Die umfassendste Zusammenfassung der historischen BTC-Preise Der Preis von Bitcoin seit seiner Geburt 2009–2025. Die umfassendste Zusammenfassung der historischen BTC-Preise Jan 15, 2025 pm 08:11 PM

Seit seiner Einführung im Jahr 2009 hat sich Bitcoin zu einem führenden Unternehmen in der Welt der Kryptowährungen entwickelt und sein Preis hat enorme Schwankungen erfahren. Um einen umfassenden historischen Überblick zu bieten, stellt dieser Artikel Bitcoin-Preisdaten von 2009 bis 2025 zusammen und deckt wichtige Marktereignisse, Änderungen der Marktstimmung und wichtige Faktoren ab, die die Preisbewegungen beeinflussen.

Überblick über den historischen Preis von Bitcoin seit seiner Geburt. Vollständige Sammlung historischer Preistrends von Bitcoin. Überblick über den historischen Preis von Bitcoin seit seiner Geburt. Vollständige Sammlung historischer Preistrends von Bitcoin. Jan 15, 2025 pm 08:14 PM

Bitcoin hat als Kryptowährung seit seiner Einführung erhebliche Marktvolatilität erlebt. Dieser Artikel bietet einen Überblick über den historischen Preis von Bitcoin seit seiner Geburt, um den Lesern zu helfen, seine Preistrends und Schlüsselmomente zu verstehen. Durch die Analyse der historischen Preisdaten von Bitcoin können wir die Einschätzung des Marktes über seinen Wert und die Faktoren, die seine Schwankungen beeinflussen, verstehen und eine Grundlage für zukünftige Investitionsentscheidungen schaffen.

Eine Liste der historischen Preise seit der Geburt von Bitcoin BTC Historical Price Trend Chart (neueste Zusammenfassung) Eine Liste der historischen Preise seit der Geburt von Bitcoin BTC Historical Price Trend Chart (neueste Zusammenfassung) Feb 11, 2025 pm 11:36 PM

Seit seiner Gründung im Jahr 2009 hat der Preis von Bitcoin im November 2021 auf 69.044,77 USD auf 69.044,77 USD gestiegen und im Dezember 2018 auf 3.191,22 USD gesunken. Ab Dezember 2024 hat der jüngste Preis 100.204 USD überschritten.

Der jüngste Preis für Bitcoin in den Jahren 2018-2024 USD Der jüngste Preis für Bitcoin in den Jahren 2018-2024 USD Feb 15, 2025 pm 07:12 PM

Echtzeit-Bitcoin-USD-Preis Faktoren, die den Bitcoin -Preis beeinflussen Indikatoren für die Vorhersage zukünftiger Bitcoin -Preise Hier finden Sie einige wichtige Informationen zum Preis von Bitcoin in den Jahren 2018-2024:

Die vollständigste Zusammenfassung der historischen Preisdetails seit der Geburt von Bitcoin (die neueste Version von 2025) Die vollständigste Zusammenfassung der historischen Preisdetails seit der Geburt von Bitcoin (die neueste Version von 2025) Feb 15, 2025 pm 06:45 PM

Wichtiger Knoten für Bitcoin Historical Price 3. Januar 2009: Genesis Block wurde generiert, das erste Bitcoin wurde mit einem Wert von USD 0 generiert. 5. Oktober: Als erste Bitcoin -Transaktion kaufte ein Programmierer zwei Pizzen mit 10.000 Bitcoins, entspricht 0,008 USD. 9. Februar 2010: Die Mt. Gox Exchange ging online und wurde zur Hauptplattform für den frühen Bitcoin -Handel. 22. Mai: Bitcoin bricht zum ersten Mal 1 $ durch. 17. Juli: Bitcoin-Preis fiel auf 0,008 USD und erreichte ein Allzeittief. 9. Februar 2011: Bitcoin Price bricht zum ersten Mal 10 US -Dollar durch. 10. April: Mt. Go

Wie kann die technische Fragen und Antworten in der Chatgpt -Ära auf Herausforderungen reagieren? Wie kann die technische Fragen und Antworten in der Chatgpt -Ära auf Herausforderungen reagieren? Apr 01, 2025 pm 11:51 PM

Die technische Q & A -Community in der Chatgpt -Ära: SegmentFaults Antwortstrategie Stackoverflow ...

In einem Artikel erfahren In einem Artikel erfahren Feb 15, 2025 pm 10:06 PM

Die Finanzierungszinsen der virtuellen Währung sind Gebühren für Händler, die Positionen im Handel mit Derivaten innehatten. Es spiegelt eine Prämie oder einen Rabatt zwischen dem Spot -Marktpreis und dem Futures -Vertragspreis nach Ablauf des Vertrags wider. Wenn der Spotpreis höher als der Futures -Preis ist, ist der Kapitalzins negativ, was bedeutet, dass Händler, die Kurzpositionen an Händlern zahlen, die Länge von Händlern zahlen. Im Gegenteil, wenn der Spotpreis niedriger als der Futures -Preis ist, ist der Kapitalzins positiv, was bedeutet, dass Händler, die lange Positionen in Anspruch nehmen, Gebühren für Händler zahlen, die kurze Positionen annehmen.

Analyse der vielversprechendsten virtuellen Währung in 2025 Top 10 potenzieller virtueller Währungsinventar im Jahr 2025 Analyse der vielversprechendsten virtuellen Währung in 2025 Top 10 potenzieller virtueller Währungsinventar im Jahr 2025 Feb 15, 2025 pm 05:51 PM

Der Markt für virtuelle Währungen entwickelt sich ständig weiter und in den kommenden Jahren wird ein aufregendes Wachstum erwartet. Im Jahr 2025 wird erwartet, dass einige Kryptowährungen sich auffallen und die vielversprechendsten Investitionen in den Raum werden. Dieser Artikel analysiert einige der vielversprechendsten virtuellen Währungen im Jahr 2025 und deckt ihre einzigartigen Fähigkeiten, ihr Wachstumspotenzial und ihre Möglichkeiten, die sich auf die Zukunft auswirken. Zu diesen Währungen gehören Ethereum, Bitcoin, Cardano, Polkadot und Binance Coin, die eine Schlüsselrolle bei der Entwicklung dezentraler Finanzierung, intelligenter Verträge und Blockchain -Technologien spielen. In Verständnis des Potenzials dieser virtuellen Währungen können Anleger bereit sein, die Chancen des virtuellen Währungsmarktes im Jahr 2025 zu nutzen.

See all articles