3

中規模企業向けのイントラネット システムを設計しています。すべてのモジュールに対して 1 つのログ テーブルを保持する必要がありますか?それとも個別に作成する必要がありますか?

監査ログにはすべての管理者/スタッフ アクティビティ (オブジェクトの作成、更新、削除) が保持され、ログ構造はあらゆる種類のモジュールに共通です。

また、ログ レコードに基づいてレポートを取得することをお勧めしますか? ログ テーブルにはオブジェクト タイプとオブジェクト ID が保持されるため、イベント、オブジェクト名、およびオブジェクト ID に基づいて、任意のオブジェクトのデータをいつでも取得できます。

このような場合、報告するための最善の方法は何ですか?

4

4 に答える 4

3

log4phpを参照してください。log4jは、ログの階層とレベルを導入することで、ロギングの問題の多くを解決しました。log4php がどれほど優れているかはわかりませんが、スターターになるはずです。

于 2009-04-26T10:02:58.380 に答える
3

私は1つのテーブルを言うでしょう。

たとえば、すべてのモジュールでユーザーアクティビティを見つけたい場合があります(私が正しく理解している場合)。これは1つのテーブルに適しています。

ログテーブルから報告しても問題ありません。別のレポート データベースにオフロードして、ロギング テーブルの競合と負荷を軽減します。

最後に、オブジェクト名とタイプを明示的に格納します (データベース オブジェクト)。DROP および CREATE を実行すると、ID が変更されます。または、たとえばテーブルがビューになる可能性があるため、タイプとオブジェクト ID の両方が変更されます。

于 2009-04-26T10:22:42.670 に答える
2

ログを確認するときは、すべてを確認できる 1 か所を確認するか、システムの 1 つの部分のみを個別に表示するいくつかの異なる場所を確認する必要があるか、どちらを行いますか?

単一のテーブルでは、無関係なエントリやユーザーが表示する権限を持っていないエントリを除外するのは簡単であることに注意してください。いくつかの個々のログを 1 つの包括的なビューに結合するのは少し面倒です。さらに、ほとんどの設計では、新しいログ テーブルが追加されるたびに結合を行うコードを再確認する必要があるという追加の欠点があります。

私は間違いなく単一のログが望ましいと言っています。複数の分離されたログが適切であると私が考えることができる唯一の状況は、セキュリティ上の懸念が、異なる可視性を持つログ エントリを物理的に分離する必要があるほど強い場合です。個別のテーブルだけでなく、ログ サーバー。

于 2009-04-26T11:11:54.487 に答える
1

私たちは単一のテーブルを使用していますが、特にパフォーマンスにおいて、これが最良のソリューションであることが証明されました。特に大規模なデータセットでは。既製のソリューションに興味がある場合は、これを試してください。

于 2009-04-26T18:34:18.090 に答える