首頁 >後端開發 >Golang >更改位置等級和時間戳記 Zerolog golang

更改位置等級和時間戳記 Zerolog golang

王林
王林轉載
2024-02-12 18:09:051355瀏覽

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

問題內容

我使用 Zerolog 進行日誌記錄,但收到了抱怨,因為日誌格式與以前不同,我正在嘗試從其他語言重構為 golang。 是否可以更改位置等級和時間戳記?

這是我的程式碼: `

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")

`

我得到了結果:

[2024-01-16T13:24:05 07:00] [訊息] - 這是訊息

块引用>

是否可以更改位置以使結果看起來像:

[ INFO ] [2024-01-16T13:24:05 07:00] - 這是訊息

块引用>

謝謝。

解決方法

您可以使用PartsOrder 來執行此操作;您還需要調整格式化程式以使- 位於正確的位置( 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")
}

輸出:

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

以上是更改位置等級和時間戳記 Zerolog golang的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除