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);
}
:
:
}
機能を作る側と使う側、という観点に立てば、使う側が余計な使い方をしないよう、機能に意図的な制限を付けるのはよくある話で。
実際、アプリログに限って言うなら、機能開発者側にはログレベル程度しか指定の自由度を与えない、っていうポリシーのもと、こういう設計をするケースはよくありまっせ。
目的次第。
あれ、一日経って読み返すと自分のコメントなのにしっくり来ない。
例えて言うなら、いくらインターネットが応用利いて便利だからって、子供に使わすときはコンテンツフィルタ入れるよね、ってのに近いだろうか。
業務機能開発者がもれなく実装面で「大人」だったら、誰も苦労はしないんだけども。
Hoge とか HogeHoge の log を取りたいんだろうけど、どう見ても LogUtil の log 取ってますね…何がしたいんだろう…。
おそらく、VB6のDebug.printとかをイメージして作ったのではないかと想像してます。
物臭君が、「クラス作ったらいちいち『private static final Logger logger = Logger.getLogger(....);』とか書くの面倒臭くね?」と思い至った可能性もあります(笑)