如何将Logrus时间设置为UTC?

7

我正在使用logrus和Go语言编程,但是我发现时间字段总是以本地时间格式化。我该如何将logrus的时间更改为UTC时间?

谢谢。

2个回答

11

直接不支持设置时区,但您可以使用自定义的log.Formatter,在其中您可以“切换”到您选择的时区,包括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"}

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

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

2
太干净了,我喜欢它。 - Gustavo Poscidonio

1

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

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

来源


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接