PHP エディタ Xigua では、実行時に ZAP レコーダーのログ レベルを更新することが一般的です。 zap は、アプリケーションの実行情報の取得と記録に役立つ強力なログ ツールです。通常、アプリケーションの起動時に zap のログ レベルを設定する必要がありますが、実際のニーズに応じて調整するために、実行時にログ レベルを動的に更新できるようにしたい場合があります。 zap では、zap の Logger インターフェイスが提供するメソッドを使用してこの機能を実現できます。具体的には、「zap.Info()」、「zap.Debug()」、「zap.Warn()」およびその他のメソッドを使用して、ログ レベルを動的に更新できます。このようにして、必要に応じて実行時に zap のロギング動作を柔軟に調整できます。
私は kubebuilder
を使用してロガーを作成しました。これは、zap ロガーに基づいています:
ここで、実行時にログ レベルを zapcore.infolevel
に変更したいと思います。 setloglevel
または同様の API は見つかりませんでした。
新しいオプションを作成してから、新しいレベルを設定する必要がありますか?
また、sigs.k8s.io/controller-runtime/pkg/log/zap
ライブラリを使用してロガーを設定する必要があります。ロガーのインターフェイスは、logr.logger
インターフェイスを実装する go-logr
から取得されます。これを zapcore.newcore
に変更しようとすると、ctrl.setlogger
を使用してロガーを設定できなくなります。
zap.options
のすべてのオプションを更新し、ログ レベルを変更し、引き続き sigs.k8s.io/controller-runtime/pkg/log/zap# を使用するオプションを維持したいと考えています。 # ザップイン #。
sigs.k8s.io/controller-runtime/pkg/log/zap
および
sigs.k8s.io/controller-runtime?
より良い答え: @oliver dainの提案に従い、zap.atomiclevelを使用してください。詳細については、回答を参照してください。
levelenabler 関数を使用してコアを作成することです。
zap.levelenablerfunc を使用して、クロージャを zapcore.levelenabler
に変換できます。
levelenabler メッセージをログに記録するときに、指定されたログ レベルが有効かどうかを決定します。
levelenablerfunc は、匿名関数を使用して zapcore.levelenabler を実装する便利な方法です。
関数は、実行時に変更される他の変数に応じて、
true または
false を返す場合があります:
リーリー
infoenabled 変数に対して初期化、ランタイム値の変更、および適切な同期 (必要な場合) を実装する必要があります。
https://play.golang.org/p/ot3nvnp1bwc
以上が実行時にザップロガーのログレベルを更新することはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。