Maison > développement back-end > Golang > le corps du texte

Comment envoyer des journaux d'informations à stdout et des journaux d'erreurs/fatales à stderr à l'aide d'uber-go/zap ?

Barbara Streisand
Libérer: 2024-10-26 11:45:29
original
955 Les gens l'ont consulté

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

Comment se connecter à stdout ou stderr en fonction du niveau de connexion à l'aide d'uber-go/zap ?

Problème :

Configurez uber-go/zap pour écrire des journaux d'informations sur stdout et des journaux d'erreurs et fatals sur stderr.

Réponse :

Pour y parvenir, utilisez zapcore.NewTee avec deux cœurs, chacun étant configuré pour gérer des niveaux de journalisation spécifiques :

<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>
Copier après la connexion

Cette configuration vous permet de contrôler l'emplacement d'écriture des différents niveaux de journalisation, offrant ainsi une plus grande flexibilité dans votre stratégie de journalisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!