Heim  >  Artikel  >  Backend-Entwicklung  >  Standortebene und Zeitstempel ändern Zerolog Golang

Standortebene und Zeitstempel ändern Zerolog Golang

王林
王林nach vorne
2024-02-12 18:09:051259Durchsuche

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

Frageninhalt

Ich verwende Zerolog für die Protokollierung, erhalte jedoch Beschwerden, weil das Protokollformat anders als zuvor ist und ich versuche, von einer anderen Sprache auf Golang umzugestalten. Ist es möglich, die Standortebene und den Zeitstempel zu ändern?

Das ist mein 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")

`

Ich habe das Ergebnis erhalten:

[2024-01-16T13:24:05+07:00] [Nachricht] – Das ist die Nachricht

块引用>

Ist es möglich, die Position so zu ändern, dass das Ergebnis wie folgt aussieht:

[ INFO ] [2024-01-16T13:24:05+07:00] – Das sind die Neuigkeiten

块引用>

Vielen Dank.

Workaround

Sie können dazu PartsOrder verwenden; Sie müssen außerdem den Formatierer anpassen, damit sich - an der richtigen Position befindet (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")
}

Ausgabe:

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

Das obige ist der detaillierte Inhalt vonStandortebene und Zeitstempel ändern Zerolog Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen