ログ出力元の取得方法

かなり驚いたので書いておく。

ログを出力する際に、出力元メソッド名を自力で取得している箇所がある。せっかく Log4j を使用しているのだけど、その辺はもうどうでもいい。

わたしだったらたぶん java.lang.reflect を使っている。というかそれも苦肉の策で、本来なら Log4j に任せたい。

しかし、このコードは Throwable インスタンスをその場で新たに作り、スタックトレースの行をマジックナンバー指定して取り出しているのだった。

道理でログにソースコードの行数まで出力されているわけだね。なるほど。