Johnman.md

プログラミングのことや個人的なことを書きます。たぶん。

echo用にzerologのラッパーzeroechoをつくった

最近仕事でechozerologを使う機会があったので、勉強がてらにwrapperを作ってみました。 ぶっちゃけ使うことはないと思います。

github.com

実装

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はシンプルに使えていいなぁと思ったので、もうちょっと他の部分のコードも読んでみようかと思います。