Javaで、指定されたデバッグレベルに応じてデバッグログ出力メソッドの呼び出し自体を削除するライブラリー(エージェント?)を作ってみた!
Javaでは、デバッグモードやリリースモードといったビルドの種類に応じてデバッグログ出力メソッドの呼び出し自体をしたりやめたりするという切り替えは出来ない。なので呼び出す側の引数内の演算自体は常に行われてしまう為、実際に出力されない場合には無駄だった。
これをクラスのロード時に取り除くものが夢だった、というか欲しかったというわけ。これが出来たのはJavassistのおかげ~♪
ログ出力メソッドや削除対象クラスを示すのにアノテーションを使ってみたのでJDK1.5以降用だけど。アノテーションって、たぶんこういう事の為にあるんだよね。
実際のところ、JDK1.4でも実現できると思うし。(アノテーション削って、foreach使うのやめて、Listにキャストを付ければ…)
でもいい加減JDK1.5以降に移行しようよ、という願望を込めてみた^^;
それにしてもこういうログ出力削除って、絶対“車輪の再発明”(誰かが既に作ってるはず)だよな~。きっと探し方が悪いだけだと思う…。
※コメント投稿者のブログIDはブログ作成者のみに通知されます