如何将logrus时间设置为UTC

时间:2016-11-09 08:03:33

标签: go time-format

我正在使用Go with logrus,但我发现时间字段始终以本地时间格式化。如何更改logrus的UTC时间?

由于

2 个答案:

答案 0 :(得分:6)

不支持直接设置时区,但您可以使用自定义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"}

答案 1 :(得分:1)

You need to write your own implimentation of logrus.Formatter.

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

Source