Log4jとかのロガーでの出力処理をラップしただけのクラスが用意されてて、それでログを吐きます。
など、Log4jなどに用意された便利な機能が色々使えず死ねばいいのに。
public class Hoge { public void foo(){ HogeHoge obj = new HogeHoge(); LogUtil.debug("HogeHoge実行前"); obj.execute(); LogUtil.debug("HogeHoge実行後"); : : } } public class HogeHoge { public void execute(){ LogUtil.debug("実行!"); : : } } public class LogUtil { /** Logger */ private static final Logger logger = Logger.getLogger(LogUtil.class); /** * デバッグレベルのログを出力します * @param message メッセージ */ public static void debug(String message){ logger.debug(message); } : : }
使い方ヒント: 「これは臭う」という行を見付けたら、各行のをクリックしてマーキングしておきましょう(要Twitter OAuth認証)
機能を作る側と使う側、という観点に立てば、使う側が余計な使い方をしないよう、機能に意図的な制限を付けるのはよくある話で。
実際、アプリログに限って言うなら、機能開発者側にはログレベル程度しか指定の自由度を与えない、っていうポリシーのもと、こういう設計をするケースはよくありまっせ。
目的次第。
あれ、一日経って読み返すと自分のコメントなのにしっくり来ない。
例えて言うなら、いくらインターネットが応用利いて便利だからって、子供に使わすときはコンテンツフィルタ入れるよね、ってのに近いだろうか。
業務機能開発者がもれなく実装面で「大人」だったら、誰も苦労はしないんだけども。
Hoge とか HogeHoge の log を取りたいんだろうけど、どう見ても LogUtil の log 取ってますね…何がしたいんだろう…。
コメント投稿には、twitter認証が必要です。
Twitter認証
おそらく、VB6のDebug.printとかをイメージして作ったのではないかと想像してます。
物臭君が、「クラス作ったらいちいち『private static final Logger logger = Logger.getLogger(....);』とか書くの面倒臭くね?」と思い至った可能性もあります(笑)