端末やプロンプトに出るログを独自フォーマットで出力する(java.util.logging.Logger)

 今日は少し java プログラミングのお話です。
 Java で logger (java.util.logging.Logger) を使って独自のフォーマット形式で出力したいとき、出力先ファイルを設定した FileHandler に自分で作った Formatter を設定したりします (こちらが参考になります; hellohiro.com)。しかし、これだと FileHandler で新たに設定したファイル等に出力する部分しかフォーマットが変更されず、端末に表示されるログはデフォルトのままです。
 端末内に表示されるログのフォーマット(形式)を変更する方法としては、プロパティファイルを利用して設定する方法もありますが、それもちょっと面倒です(プロパティファイルを使う方法はこちらが少し参考になります; http://634.ayumu-baby.com/java/java_util_logging.html)。
 ちょっと強引ですが、端末にされるもとのログのフォーマットを変更する方法を見つけたので、紹介してみたいと思います。具体的には (1) logger を作成して、(2) その親にあたる logger(これが端末にログを表示させている)を getParent() でとってきて(3) その大元の logger に独自のフォーマッター(以下では MyFormatter と書いてあります)を設定する、という流れになります。

// logger を作成する。
Logger logger = Logger.getLogger("MyLogger");
 
// 作成した logger の親をとり (getParent)、その handlers に formatter を設定する。
logger.getParent().getHandlers()[0].setFormatter(new MyFormatter());

 MyFormatter に関しては、java.util.logging.Formatter を拡張して作ります(独自フォーマッタ作成に関してはこちらが参考になります; 標準ロギングは使いやすいのは常識かと思ってたけど - しんさんの出張所 はてなブログ編 )。
 一回設定するだけで、logger 全体の端末出力を変更することができます。Formatter の変更以外にも出力をファイルに変更するなども可能です。結構簡単に設定出きるので、プロパティファイルを使うより簡単でいいかな、と思っています(*´ω`*)。(わたしがプロパティファイルをしっかり使いこなせていないという説も...)これによる副作用もあるのかな?しばらく使っているけど、特に問題ないかなぁと思っています。小ネタですが、探しても同じような内容のよい記事が(日本語で?)なかったので、少し試行錯誤した時間が誰かの役に立てば。