Loggerインスタンスは、LoggerFactory.getLogger()で取得することができました。 その際、文字列(String)かクラス(Class)を引数に入れることが可能でした。 そして取得するLoggerインスタンスは、LoggerFactory.getLogger()で指定した名前のものです。 では、Loggerインスタンスの名前に、何の意味があるのでしょうか。
Loggerインスタンスの名前は、カンマ(.)で区切られた、階層構造で表現されます。 例えば、「parent」という名前のロガーがあって、その下の階層に「child」という名前のロガーを作成したい場合、 「parent.child」という名前のロガーとなります。
// "parent"という名前のロガー
Logger parentLogger = LoggerFactory.getLogger("parent");
// "parent.child"という名前のロガー
Logger childLogger = LoggerFactory.getLogger("parent.child");
ここで重要なのは、childLoggerはparentLoggerのロギングの設定を継承するということです。
例えば、parentLoggerは、errors.logというファイルにログを吐き出す設定ならば、 childLoggerもまた、errors.logというファイルにログを吐き出します。 childLoggerは、そのログ名がparentLoggerの子だからです。