Wie sende ich Infoprotokolle an stdout und Fehler-/schwerwiegende Protokolle an stderr mit uber-go/zap?

Barbara Streisand
Freigeben: 2024-10-26 11:45:29
Original
955 Leute haben es durchsucht

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

Wie melde ich mich bei stdout oder stderr basierend auf der Protokollebene mit uber-go/zap an?

Problem:

Konfigurieren Sie uber-go/zap so, dass Infoprotokolle nach stdout und Fehler- und schwerwiegende Protokolle nach stderr geschrieben werden.

Antwort:

Um dies zu erreichen, Verwenden Sie zapcore.NewTee mit zwei Kernen, von denen jeder für die Verarbeitung bestimmter Protokollebenen festgelegt ist:

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

Mit dieser Konfiguration können Sie steuern, wohin in verschiedene Protokollebenen geschrieben wird, was eine größere Flexibilität bei Ihrer Protokollierungsstrategie bietet.

Das obige ist der detaillierte Inhalt vonWie sende ich Infoprotokolle an stdout und Fehler-/schwerwiegende Protokolle an stderr mit uber-go/zap?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!