簡単にログにユーザIDを出す方法

「ログにユーザID出してよ」という要望に比較的簡単に答える方法について説明。
久々の技術ネタ。

■前提条件



 ・J2EE1.3以上(Filterが使える事)
  Tomcat4.2以上なら対応していたハズ。
 ・Log4jとかLoggerを元々使っている事。


■説明



【製造物】
 ・ThreadMappingSingletonClass
 ・ThreadRegistFilterClass
 ・自前LoggerClass
 ・web.xml(編集するのさ)
【クラス概要】
 ■ThreadMappingSingletonClass
  ・概要
   スレッドIDとユーザIDを保持するシングルトンクラス
  ・フィールド
   ・Map:スレッドIDとユーザIDを保持するマップ
  ・機能
   ・登録
     スレッドIDとユーザIDを引数とし、Mapに登録する。
   ・削除
     スレッドIDを引数とし、Mapから削除する。
 ■ThreadRegistFilterClass
  ・概要
   RequestをFilterし、ThreadMappingSingletonClassに登録、削除をする。
   Filterをimplimentsする事。
  ・機能
   SessionなりRemoteUserなりでユーザIDを取得し、ThreadMappingSingletonClassに登録する。
   因みに、Finallyで削除するのが良いと思う。
 ■自前LoggerClass
  ・概要
   ThreadMappingSingletonClassからスレッドIDをキーにしてユーザIDを取得する。
   ログ出力メッセージの先頭にユーザIDを出力する。
   LoggerをExtendsなりimplimentsする事。
  ・機能
   それぞれのメソッドをオーバーライドなり何なりして、適切にメッセージが出力出来るようにして下さい。


本当はシーケンス図があれば分かりやすいんだろうけど、めんどいので割愛。
分かって。



コメント

このブログの人気の投稿

ResultSet.next()の高速化

雁尾千恵(37)

TomcatでSessionを使いたくない場合