投稿

golangのlogのフォーマットを設定したい

golangのlogのフォーマットを設定したい

Goの標準logパッケージが出力するタイムスタンプの書式を独自形式に変更したいときに使う。io.Writerを実装したlogWriterをlog.SetOutputに渡すことで、ログ出力のたびにこのWriteが呼ばれ、任意のフォーマットでタイムスタンプ付きの行を出力できる。

type logWriter struct {
}

func (writer logWriter) Write(bytes []byte) (int, error) {
    return fmt.Print(time.Now().UTC().Format("2006-01-02T15:04:05.999Z") + " [DEBUG] " + string(bytes))
}

func main() {

    log.SetFlags(0)
    log.SetOutput(new(logWriter))
    log.Println("This is something being logged!")
}

How to change the date/time format of Go’s log package - Stack Overflow