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

Changer le niveau de localisation et l'horodatage Zerolog golang

王林
Libérer: 2024-02-12 18:09:05
avant
1318 Les gens l'ont consulté

更改位置级别和时间戳 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")
Copier après la connexion

`

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

Sortie :

[ INFO  ] [2024-01-16T21:11:39+13:00] -  this is message
Copier après la connexion

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:stackoverflow.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal