Quantcast
Channel: Big Sky
Viewing all articles
Browse latest Browse all 121

Windows でも色付きでログが出せる golang のライブラリ「go-colorable」書いた。

$
0
0

golang には logger が星の数ほどあるのですが

go言語におけるロギングについて — さにあらず

コマンドラインオプションについて 分かり辛いので、僕の分かった事だけをメモしておきます。 ログの出力処理は glog.go#output を読めば大体分かります。 -logtostderr これを指定...

http://blog.satotaichi.info/logging-frameworks-for-go

その殆どがエスケープシーケンスを使って色を出しており、Windows で動かすと残念な表示になる物ばかりでした。

まさかログに色を付けたいという理由だけで ansiconを使うのは悲し過ぎるし、そもそも「ansicon 使ったら負けだと思ってる」ので、go-colorable というライブラリを書きました。

golang の logger はその殆どが標準パッケージの log を参考にしており、おおよそ SetOutputという、出力先を変えられる関数が用意されています。そこで、それを横取りして Windows でも色を出せる様にしました。

mattn/go-colorable - GitHub
https://github.com/mattn/go-colorable

これを使うと今まで

bad

こんな表示だったのが

good

この様にカラフルな表示になります。使い方はとても簡単で

package main

import (
    "github.com/mattn/go-colorable"
    "github.com/Sirupsen/logrus"
)

func main() {
    logrus.SetOutput(colorable.NewColorableStdout())

    logrus.Info("succeeded")
    logrus.Warn("not correct")
    logrus.Error("something error")
    logrus.Fatal("panic")
}

この様に NewColorableStdoutを呼び出して io.Writerを取得し、それを logger 等に渡すだけです。Windows 以外の場合は os.Stdoutを返す様になっているのでいちいち Windows かどうか判定する必要もありません。

UNIX で色を標準出力するライブラリ書いたけど、Windows... 知らねぇよ!って人は、ぜひこのライブラリを使ってみて下さい。きっと pull-request を貰うまでもなく、Windows 対応が完了している事になるはずです。


Viewing all articles
Browse latest Browse all 121

Trending Articles