簡単にログにユーザ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する事。
・機能
それぞれのメソッドをオーバーライドなり何なりして、適切にメッセージが出力出来るようにして下さい。
本当はシーケンス図があれば分かりやすいんだろうけど、めんどいので割愛。
分かって。
コメント