go-loggingライブラリとは
go-logging https://github.com/op/go-logging はGoの簡易ロギングライブラリであり、例えばHyperledger Fabric https://github.com/hyperledger/fabric などで使われている。
Module
go-loggingは "module" 毎にログレベルを設定することができるのだが、この "module" の意味がはっきりしないので実験してみた。
実験コード
(略)
結論: moduleは階層構造を持たない、ただの文字列だった
- Moduleとはログの出力区分を表す、ただの文字列である。「ただの」というのは階層構造を持たないことを意味する。
- たとえば、module "foo" に対するログレベルが明示的に設定され、かつ、module "foo/bar" のログレベルが明示的に設定されていないとする。この場合 "foo/bar" のログレベルを決定するにあたり、"foo" の設定を見に行くことはない。
- ちなみに他の区切り文字を使っているということもない (たとえばNode.jsのdebugモジュール https://www.npmjs.com/package/debug は ":" がモジュール区切り文字として機能する)
- ただし、module "" に関してはルートレベルmoduleとして機能する。つまり、module "foo" に対するログレベルを決定したい場合に、それが明示的に設定されていなければ、module "" のログレベル設定を見に行く。
ソースコードの当該部分
このあたり https://github.com/op/go-logging/blob/master/level.go#L91-L93
なお、96行目あたりを見るとログレベルのデフォルトがDEBUGであることもわかる。
以上