Maison >développement back-end >Golang >Comment envoyer des journaux d'informations à stdout et des journaux d'erreurs/fatales à stderr à l'aide d'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>
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!