log4jの設定を動的に変更するには?

東京だと食べ物・飲み物・日用品が枯渇しているらしく静岡で買っていくらしい。
さて、3日目にして書くことがないので仕事の備忘録でも。

log4j(1.2||1.3)の設定ってクラスローダの再起動が伴うと思うのが一般的な考え。しかし、

  • PureにJavaな人
  • ミッションクリティカルなシステムの管理者さん
  • Java=魔法の玉手箱とか思っている要件定義者さん

から言わせれば、クラスローダ再起動なしで設定を切り替えられることが常套手段らしい。ということで色々Google先生に聞いてみるわけですよ。

MBeanを登録して外部から操作する方法もあったりするようで。しかし、log4jの設定を動的に変更するには。←ココの情報が目から鱗。しかし、どうみてもヒントです。本当にありがとうございました。私は、特に人前で、他の人々のことを批判することを不愉快であると考えている。log4jの偉い人も言っているしね。ということで、log4jのソースを落としてきて見ることにしてみた。

結論。XMLならorg.apache.log4j.xml.DOMConfigurator#doConfigure()が魔法の玉手箱のようで。ただし、フィジビリティ検証はできてないので、今のところは何とも言えない。たぶん目的は達成されるかな。

余談だが、私が所属するチームはフレームワーク(ベースは最近流行のSpring Framework)をベースとし、色んな機能を開発し提供するチームで。できればlog4jの素のAPIは隠蔽した形で公開したい。隠蔽することで将来拡張しやすくなるし。
検証結果は次の機会に。