如何将 logrus 时间设置为 UTC
How can I set the logrus time to UTC
我将 Go 与 logrus 一起使用,但我发现时间字段的格式始终为本地时间。如何将 logrus 的时间更改为 UTC 时间?
谢谢
您需要编写自己的 logrus.Formatter
实现。
type Formatter interface {
Format(*Entry) ([]byte, error)
}
不直接支持时区设置,但您可以使用自定义 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"}
我将 Go 与 logrus 一起使用,但我发现时间字段的格式始终为本地时间。如何将 logrus 的时间更改为 UTC 时间?
谢谢
您需要编写自己的 logrus.Formatter
实现。
type Formatter interface {
Format(*Entry) ([]byte, error)
}
不直接支持时区设置,但您可以使用自定义 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"}