Maison  >  Article  >  développement back-end  >  Changer le niveau de localisation et l'horodatage Zerolog golang

Changer le niveau de localisation et l'horodatage Zerolog golang

王林
王林avant
2024-02-12 18:09:051315parcourir

更改位置级别和时间戳 Zerolog golang

Contenu de la question

J'utilise Zerolog pour la journalisation mais je reçois des plaintes car le format du journal est différent d'avant et j'essaie de refactoriser un autre langage vers Golang. Est-il possible de modifier le niveau de localisation et l'horodatage ?

Voici mon code : `

consoleWriter := zerolog.ConsoleWriter{Out: os.Stdout, NoColor: 
true, TimeFormat: time.RFC3339}

consoleWriter.FormatLevel = func(i interface{}) string {
    return strings.ToUpper(fmt.Sprintf("[ %-6s] -", i))
}
consoleWriter.FormatTimestamp = func(i interface{}) string {
    return strings.ToUpper(fmt.Sprintf("[%s]", i))
}

if cfg.Logger.WriteLogger {
    multi = zerolog.MultiLevelWriter(consoleWriter, file)
} else {
    defer file.Close()
    multi = zerolog.MultiLevelWriter(consoleWriter)
}

logger := zerolog.New(multi).Level(zerolog.TraceLevel).
    With().
    Timestamp().
    Logger()
 logger.Info().Msg("this is message")

`

J'ai eu le résultat :

[2024-01-16T13:24:05+07:00] [Message] - C'est l'actualité

块引用>

Est-il possible de changer la position pour que le résultat ressemble à :

[ INFO ] [2024-01-16T13:24:05+07:00] - C'est l'actualité

块引用>

Merci.

Solution de contournement

Vous pouvez utiliser PartsOrder pour ce faire ; vous devrez également ajuster le formateur pour que le - soit dans la bonne position (playground).

func main() {
    consoleWriter := zerolog.ConsoleWriter{Out: os.Stdout, NoColor: true, TimeFormat: time.RFC3339}

    consoleWriter.FormatLevel = func(i interface{}) string {
        return strings.ToUpper(fmt.Sprintf("[ %-6s]", i))
    }
    //consoleWriter.FormatTimestamp = func(i interface{}) string {
    //  return strings.ToUpper(fmt.Sprintf("[%s] -", i))
    //}
    consoleWriter.TimeFormat = "[" + time.RFC3339 + "] - "
    consoleWriter.PartsOrder = []string{
        zerolog.LevelFieldName,
        zerolog.TimestampFieldName,
        zerolog.CallerFieldName,
        zerolog.MessageFieldName,
    }
    logger := zerolog.New(consoleWriter).Level(zerolog.TraceLevel).
        With().
        Timestamp().
        Logger()
    logger.Info().Msg("this is message")
}

Sortie :

[ INFO  ] [2024-01-16T21:11:39+13:00] -  this is message

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer