LoginSignup
1
2

More than 3 years have passed since last update.

【Go】go-logging における "module" は階層構造を持たない

Last updated at Posted at 2017-09-27

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であることもわかる。

以上

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2