Java では、ロガーを作成するために、呼び出す代わりに
private static final Logger logger = LoggerFactory.getLogger("ClassName");
スタック トレースからクラス名を返し、そのメソッドを呼び出すユーティリティ メソッドを作成しました。
private static final Logger logger = LoggerFactory.getLogger(Utilities.getInvokingClassName());
Utilities.java
:
public static String getInvokingClassName()
{
return new Throwable().getStackTrace()[1].getClassName();
}
短所は明らかにリソース集約型のプロセスを使用していることですが、長所はコーディング時のモジュール性が高いことです。問題は、これによるパフォーマンスへの影響がどれほど大きいかということです。リソースをあまり消費しないのであれば、なぜそれが標準的な方法ではないのでしょうか?