echo用にzerologのラッパーzeroechoをつくった
最近仕事でechoとzerologを使う機会があったので、勉強がてらにwrapperを作ってみました。 ぶっちゃけ使うことはないと思います。
実装
echo.Loggerのinterfaceは次のように定義されてます。
Logger interface { Output() io.Writer SetOutput(w io.Writer) Prefix() string SetPrefix(p string) Level() log.Lvl SetLevel(v log.Lvl) SetHeader(h string) Print(i ...interface{}) Printf(format string, args ...interface{}) Printj(j log.JSON) Debug(i ...interface{}) Debugf(format string, args ...interface{}) Debugj(j log.JSON) Info(i ...interface{}) Infof(format string, args ...interface{}) Infoj(j log.JSON) Warn(i ...interface{}) Warnf(format string, args ...interface{}) Warnj(j log.JSON) Error(i ...interface{}) Errorf(format string, args ...interface{}) Errorj(j log.JSON) Fatal(i ...interface{}) Fatalj(j log.JSON) Fatalf(format string, args ...interface{}) Panic(i ...interface{}) Panicj(j log.JSON) Panicf(format string, args ...interface{}) }
そこで、これらのメソッドをもつLoggerを実装しました。
https://github.com/johnmanjiro13/zeroecho/blob/master/log.go
ついでにmiddlewareも実装したので、リクエストログもこれで扱えます。
https://github.com/johnmanjiro13/zeroecho/blob/master/middleware.go
パッケージ公開
そもそもパッケージを公開するのが初めてだったので調べたんですが、GoはGithubにプッシュしたらもうgo get
できるんですね。知らなかった。
バージョンもGithubのタグで管理できます。思いのほか簡単でびっくりしました。
まとめ
今回実装するにあたりechoのlog周りのコードやzerologのコードを読んだのが面白かったです。
echoはシンプルに使えていいなぁと思ったので、もうちょっと他の部分のコードも読んでみようかと思います。