質問
お客様にて欲しい"ログイン"、"行動"ユーザが行うシステム:作成、削除、更新す。すでに持っていうログのトレース、その作品で写低レベルのログイン毎のメソッドの呼び出し.ではないのでユーザがクリックし、ボタン"開く医療ファイル"のログを読む:
- closePreviousFiles"患者ゼロ")
- createMedicalFile"患者ゼロ")-->ファイル#001
- changeStatus("#001"を開
ながら所望の結果は:
- 開業医ファイル#001患者ゼロ
おうと思っていinstrumenting Struts2の行動ログを書がった...しおりを付けることができる。使いAspectJ再度フィルター)の論理だけでは、こちらから参照するかを設定し、ログに簡単に、私ものとなりにくわわ"ログに、このアクションのためには間違ったコミュニケーションがっちゃうのか。").
解決
は、サウンドます。
行動に一定の列挙/付き監査エントリを開始する(Webリクエストから)各アクションのエントリポイントでそれを考えます。情報利用者を移入可能な場合は提供してきました。
それが成功したか失敗した場合は、終了時/最終的には、監査に示しています。 擬似コードの例:
enum Actions {
OPEN_MEDICAL_FILE
...
}
void handleRequest(...) {
String patient = ...;
Audit audit = new Audit(OPEN_MEDICAL_FILE);
audit.addParameter("patient", patient);
try {
... more things ..
audit.addParameter("file", "#001");
... more things ...
audit.setSuccess();
} finally {
audit.save();
}
}
ここで重要なことは、すべてのユーザーのアクションに関係なく、成功または失敗の、保存されているということです。また、クライアントは本当にアクションとともに、関連するすべての情報を知っておく必要があります。
私たちはアクション定数とデータをログに記録されているので、クライアントへの監査のプレゼンテーションは別々に符号化することができます。あなたは、「プレゼンテーション列の変化(例えば、患者ゼロ#001の医療ファイルを開く」に「患者ゼロのための医療ファイル#001を開いた」)以来、あまりにも柔軟性を得る行為の時に決定されていないが、後。あなたはドントン監査データをremassageする必要があります。
他のヒント
私は最近、後処理のログ。あなたは上記のログに#2、#3は、異なる場所に生成され、望ましい結果がある場所から別の場所に状態を持ち歩く必要になる場合は特に、そのアプローチを検討する必要があります。
あなたは、ロギングやバージョニングの両方を検討する必要があります。私も、データベース・トリガーでこれをやって考えるでしょう。私は、Javaプログラミングの多くを行いませんが、私は私達の学生情報システムチームとのこの非常に問題を議論してきました。彼らは、バックエンドでOracleを使用するとその接続でセッション変数を登録します。彼らのトリガーは重要な表の(更新/削除に)ログエントリとバージョン履歴を作成するには、このセッション変数を使用します。これは、彼らに監査およびロールバック機能の両方を提供します。私はこれらの両方が、医療記録の用途に有用であろうと思うだろう。
また、アプリケーションレベルのロギングを行うためのlog4jを使用しますが、データロギングは、データベース内で行われます。
私は「log4jのを」使用、Struts2のアクションに似たものをやりました。アプリケーション・サーバーによっては、メッセージカタログ(例えば:Weblogicの)の使用を可能にする統合ログシステムを持っているかもしれません。