ホームページ  >  記事  >  バックエンド開発  >  uber-go/zap を使用して情報ログを標準出力に送信し、エラー/致命的ログを標準エラー出力に送信するにはどうすればよいですか?

uber-go/zap を使用して情報ログを標準出力に送信し、エラー/致命的ログを標準エラー出力に送信するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-26 11:45:29943ブラウズ

How to Send Info Logs to stdout and Error/Fatal Logs to stderr Using uber-go/zap?

uber-go/zap を使用してログ レベルに基づいて stdout または stderr にログを記録する方法?

問題:

情報ログを標準出力に書き込み、エラーと致命的なログを標準エラー出力に書き込むように uber-go/zap を設定します。

答え:

これを実現するには、次のようにします。 zapcore.NewTee を 2 つのコアで使用し、それぞれが特定のログ レベルを処理するように設定されています。

<code class="go">import (
    "go.uber.org/zap"
    "go.uber.org/zap/zapcore"
    "os"
)

func main() {
    // Create a level enabler for info logs
    infoLevel := zap.LevelEnablerFunc(func(level zapcore.Level) bool {
        return level == zapcore.InfoLevel
    })

    // Create a level enabler for error and fatal logs
    errorFatalLevel := zap.LevelEnablerFunc(func(level zapcore.Level) bool {
        return level == zapcore.ErrorLevel || level == zapcore.FatalLevel
    })

    // Create stdout and stderr writers
    stdoutSyncer := zapcore.Lock(os.Stdout)
    stderrSyncer := zapcore.Lock(os.Stderr)

    // Create a tee core that writes to both stdout and stderr
    core := zapcore.NewTee(
        // Core for info logs
        zapcore.NewCore(
            zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()),
            stdoutSyncer,
            infoLevel,
        ),
        // Core for error and fatal logs
        zapcore.NewCore(
            zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig()),
            stderrSyncer,
            errorFatalLevel,
        ),
    )

    // Create a logger with the tee core
    logger := zap.New(core)

    // Log info and error messages
    logger.Info("info log")
    logger.Error("error log")
}</code>

この構成により、異なるログ レベルの書き込み先を制御できるため、ロギング戦略の柔軟性が高まります。

以上がuber-go/zap を使用して情報ログを標準出力に送信し、エラー/致命的ログを標準エラー出力に送信するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。