我正在使用logrus和Go语言编程,但是我发现时间字段总是以本地时间格式化。我该如何将logrus的时间更改为UTC时间?
谢谢。
我正在使用logrus和Go语言编程,但是我发现时间字段总是以本地时间格式化。我该如何将logrus的时间更改为UTC时间?
谢谢。
直接不支持设置时区,但您可以使用自定义的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"}