問題タブ [audit-logging]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
odoo - Odoo v8 ですべてのユーザー アクションを追跡する方法はありますか
私は auditlog をインストールしました。smile_audit はどちらも似ていますが、1 つのモジュールに基づいてログを追跡するだけです。
しかし、私は Odoo ですべてのモジュールを探しています。基本的にユーザーによる。ルールを定義してみました
しかし、それは何も追跡しません。これに対する解決策はありますか?
graph - 時系列を使用した OrientDB のイベント監査ロギング
OrientDB をパーシスタンス レイヤーとして使用するアプリケーションがあり、大きな成功を収めています。監査証跡の実装を検討しているときに岐路に立たされました。
IMO 監査は、次の 4 つのコア プロパティで構成する必要があります。
- タイムスタンプ(アクションが発生した時間)
- アクター(アクションを実行するエンティティ)
- ターゲット(操作対象のエンティティ)
- アクション(これは、要件に応じて、事前および事後状態、説明などの多くのサブパーツで構成できます。)
一方では、さまざまなエンティティ間のこのタイプの関係は、グラフ データベースに最適です。一方で (やはり IMO) グラフ データベースは、時間に関しては、素晴らしく装備されていないか、操作が簡単ではありません。
私は今、2つのアイデアの間で引き裂かれています:
時系列を作成する
基本的には、セグメント化された頂点ノードの時間を表すカスケード時系列をデータベースに作成するという考え方です。
すべてのアクション可能なプロパティAudit
を含む頂点を作成し、と最も近い時間頂点ノードの間、と の間、との間の関係を作成します。Edge
Audit
Audit
Actor
Audit
Target
まっすぐな関係を築く
時系列は、考慮する必要があるレベルの複雑さを追加します。監査を 3 つのルート基準で検索する必要があると仮定します。、および時間。Actor
_ 時間はほぼ常に要件であるため、時系列は魅力的なソリューションになります。過去 30 日間のすべてを入手してください。Target
Audit
しかし、ジョンAudit
がActor
. おそらく、時間の関係を無視して、Edge
toActor
とTarget
タイムスタンプを使用して監査を作成することもできます。
または、タイムスタンプも のプロパティである可能性がありEdge
ます。
時系列には本当に利点がありますか、それとも不必要な複雑さを追加しているだけですか? グラフ データベースでのイベントの監査に関して、既に受け入れられているより良い方法はありますか?
postgresql - Postgresql はログ スキーマを作成します
だから私の問題は簡単です。prod
多くのテーブルを持つスキーマとlog
、まったく同じテーブルと構造を持つ別のスキーマがあります (主キーの変更はそれだけです)。UPDATE
or DELETE
in the schemaを行うときprod
、古いデータをスキーマに記録したいlog
。
更新または削除後に次の関数を呼び出しています。
厄介な部分は、各行から列名を取得する必要があることinformation_schema
です。私はむしろこれを使用したいと思います:
ただし、一部の値は次のNULL
ように実行される可能性があります。
INSERT INTO log.user SELECT 2,,,"2015-10-28 13:52:44.785947" INSERT INTO log.user SELECT 2,NULL,NULL,"2015-10-28 13:52:44.785947" の代わりに
",,"
に変換するアイデアはあり",NULL,"
ますか?
ありがとう
-クエンティン
entity-framework - エンティティフレームワーク、ナビゲーションプロパティを含むエンティティへの変更を追跡する一般的な方法?
エンティティへの変更を追跡するための質問をすべて見てきましたが、それらのソリューションにはナビゲーション プロパティが含まれていませんでした。これは可能ですか?すべてをログに記録するだけの超汎用ソリューションは必要ありません。特定の「メイン」エンティティについてのみ追跡したい。また、監査ログは人間が判読できるカスタムのものになるため、ここの例で見たような oldData と newData を持つテーブルだけではありません。
ナビゲーション プロパティを追跡することを除いて、ほぼ良い点に到達しました。変更を追跡するかどうかを決定する POCO のサービスにインターフェイスがあり、entityService.Save
メソッドで次のチェックを行います。
変更の保存メソッドは、ITrackChanges インターフェイスが公開するものであり、エンティティごとにカスタム ロジックを持ちます (これには電子メール通知などが含まれます) が、問題は oldEntity を適切に取得できないことです。現在、メソッドは次のようになっています。
私が遊んでいるコードを見ることができます。通常のプロパティの古い値と新しい値を正常に取得できますが、ナビゲーション プロパティは引き継がれません。しかし、この情報が必要です。たとえば、ユーザーを編集していて、ユーザーの編集画面でグループを削除および追加できるとします。保存ボタンをクリックすると、それらの更新が実行されます。
したがって、私の更新ビューは次のようになります。
問題を確認する 1 つの方法は、ナビゲーション プロパティを含め、既存のユーザー レコードのコンテキストでエンティティの値を調整している.ConvertFromSaveeModel()
ため、save を呼び出すと、古いナビゲーション プロパティ データがなくなることです。
このワークフローを使用してエンティティの元のナビゲーション プロパティ情報を取得する方法はありますか? そうでない場合、これを可能にするためにワークフローを変更するにはどうすればよいですか? 最初にユーザー オブジェクトをクエリせずに最初から作成すると、viewModel で公開されていない可能性のある一部のデータが渡されないため、うまくいくかどうかわかりません。他の提案はありますか?変更を加える前に、エンティティを複製して元のエンティティとして使用することはできますか? それはナビゲーション プロパティを引き継いでいますか?