2016-11-09 16 views
3

私はlogrusを使用していますが、時刻フィールドは常に現地時間でフォーマットされています。 logrusの時間をUTC時間に変更するにはどうすればよいですか?あなたはlogrus.Formatterの独自のimplimentationを記述する必要がログローラ時間をUTCに設定するには

おかげ

答えて

6

タイムゾーンの設定は、直接サポートされていませんが、あなたはあなたの選択のタイムゾーンに「スイッチ」、UTCが含まれているカスタムlog.Formatterを使用することができます。ローカルタイムゾーン(ない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"} 
+1

これはとてもきれいです。大好きです。 –

1

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

Source

関連する問題