$yanutetsu->{blog}

プログラマ三大美徳なPM

golangで人類に優しいログを出力する

やぬてつです。

この記事はEmacsGolangを書いている人をターゲットとしています。ですがsnippte部分以外はEmacsとは関係ないです。

Golangを書いていると構造体を出力したい時がありますよね。 そんなときには fmt.Printf("%+v", hoge) なんかで出力すると思います。 確かに構造体を出力してくれるんですが人類には読みにくいです。 なので、pretty print して人類でも読める形にしたーいって思います。 でも、third-partyのライブラリを入れるのはメンドクサーイですよね?

なので、jsonのライブラリを使って出力してみましょう! StackOverflow

x := map[string]interface{}{"a": 1, "b": 2}
b, err := json.MarshalIndent(x, "", "  ")
if err != nil {
    fmt.Println("error:", err)
}
fmt.Print(string(b))

これをsnippetに登録してシュッと使えるようにします。

# -*- moode: snippet -*-
# name: pretty print by json.MarshalIndent
# key: ppjm
# --
b, err := json.MarshalIndent($0, "", "  ")
if err != nil {
    fmt.Println("error: ", err)
}
fmt.Printf("\x1b[34m%s\n\x1b[0m", string(b))

これで簡単にログ出力ができます。

やったー\(^o^)/

Happy Coding