如何将 logrus 时间设置为 UTC

How can I set the logrus time to UTC

我将 Go 与 logrus 一起使用,但我发现时间字段的格式始终为本地时间。如何将 logrus 的时间更改为 UTC 时间?

谢谢

您需要编写自己的 logrus.Formatter 实现。

type Formatter interface {
    Format(*Entry) ([]byte, error)
}

Source

不直接支持时区设置,但您可以使用自定义 log.Formatter,其中您可以 "switch" 选择您选择的时区,包括 UTC。

使用本地时区(而非 UTC)的简单用法可能如下所示:

import (
    log "github.com/Sirupsen/logrus"
)

func main() {
    log.SetFormatter(&log.JSONFormatter{})
    log.Info("Testing")
}

输出(时间格式使用我的 +01 本地时区):

{"level":"info","msg":"Testing","time":"2016-11-09T09:28:02+01:00"}

现在让我们创建一个切换到 UTC 的自定义 log.Formatter

type UTCFormatter struct {
    log.Formatter
}

func (u UTCFormatter) Format(e *log.Entry) ([]byte, error) {
    e.Time = e.Time.UTC()
    return u.Formatter.Format(e)
}

func main() {
    log.SetFormatter(UTCFormatter{&log.JSONFormatter{}})
    log.Info("Testing")
}

输出(时间格式为 UTC 时区):

{"level":"info","msg":"Testing","time":"2016-11-09T08:28:09Z"}