Log4jでよく、
「ログ書き込みの成否を取得したい」
って依頼を受けます。
通知されないのがLog4jの魅力なのですが…
まあ仕方ありません。
(成否が分からないだって!?そんなことが本当にあるのか?)
Log4jのErrorHandlerを継承して適当なクラスを作り、
アペンダには<errorhandler>を使って使用を宣言します。
あとはそのまま使えば…とはなりません。
ErrorHandlerのインターフェースは例外を返す仕様とはなっていないからです。
(RuntimeException系の例外クラスなら…
いやよそう、自分の勝手な想像でみんなを混乱させたくない。)
エラーハンドラのインスタンスへ干渉するには、
ロガーからgetAppenderでアペンダを取得して、
さらにgetErrorHandlerすればインスタンスに到達できます。
ただこれどう考えても単一のインスタンスなので、
相当排他処理を頑張らないとまずいことになりそうです。
あまりに使いにくいので、
サンプルとして紹介する価値もありません。
あれ?なんか霧が出てきたような…
追記:RuntimeExceptionでどうにかしたのはこちら
0 件のコメント:
コメントを投稿