2

顧客は、ユーザーがシステムで実行する「アクション」を「記録」することを望んでいます。ほとんどの場合、作成、削除、および更新です。私はすでにトレースをログに記録するアスペクトを持っていますが、それはすべてのメソッド呼び出しをログに記録するかなり低いレベルで機能します。したがって、ユーザーが「医療ファイルを開く」ボタンをクリックすると、ログには次のように表示されます。

  1. closePreviousFiles("患者ゼロ")
  2. createMedicalFile("患者ゼロ") --> ファイル #001
  3. changeStatus("#001") --> 開く

望ましい結果は次のとおりです。

  1. 患者ゼロの医療ファイル #001 を開く

ログ ステートメントを使用して Struts2 アクションを計測することを考えていますが、疑問に思っています...それを行う別の方法はありますか? もう一度 AspectJ (またはフィルター) を使用して、ロジックを 1 か所にまとめて、ログを簡単に構成できるようにするかもしれませんが、すべてが理解しにくくなるのではないかと心配しています (つまり、「このアクションのログは間違っています。 ...一体どこで問題を探すべきですか?」)。

4

4 に答える 4

3

クライアントがシステム内のユーザーのアクションの監査証跡を望んでいるようです。

各アクションのエントリポイント(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医療ファイルを開いた」)は、アクションの時点ではなく後で決定されるため、柔軟性も得られます。監査データを再マッサージする必要があります。

于 2008-12-24T15:28:21.117 に答える
1

医療データを使用している場合は、ロギングとバージョン管理の両方を検討することをお勧めします。データベーストリガーを使用してこれを行うことも考えます。私はJavaプログラミングをあまりしていませんが、この問題について学生情報システムチームと話し合いました。彼らはバックエンドでOracleを使用し、セッション変数を接続に登録します。それらのトリガーは、このセッション変数を使用して、重要なテーブルのログエントリとバージョン履歴(更新/削除時)を作成します。これにより、監査機能とロールバック機能の両方が提供されます。これらは両方とも、医療記録のアプリケーションに役立つと思います。

また、log4jを使用してアプリケーションレベルのロギングを実行しますが、データロギングはデータベースで行われます。

于 2008-12-24T13:30:37.250 に答える
1

最近、ログを後処理して要約を生成しました。特に上記のログの #2 と #3 が異なる場所で生成され、目的の結果を得るには状態をある場所から別の場所に移動する必要がある場合は、そのアプローチを検討することをお勧めします。

于 2008-12-24T11:26:38.170 に答える
1

私は Struts2 アクションで同様のことを行いました。「log4j」を使用しました。アプリケーション サーバーによっては、メッセージ カタログ (Weblogic など) の使用を可能にする統合ログ システムがある場合があります。

于 2009-01-13T18:00:47.813 に答える