私はすでに自分のシステムの簡単な監査証跡を持っています。しかし、私の教授は、ユーザーが監査証跡に対して行ったことを追加したいと考えています。私はそれを行う方法を想像することさえできません。log4phphttp : //logging.apache.org/log4php/index.htmlを発見 しました。サイトにアクセスするたびにテキストファイルが作成されることを知りました。しかし、それをmysqlにすでにあるテーブルに組み込み、ページのアクティビティ列に入力するにはどうすればよいですか?
1 に答える
テーブルにこの情報を保存できません。ログインとログアウトのタイムスタンプの列、および「アクティビティ」のあるものが表示されますが、生成されるデータは、ログインセッションごとに複数のアクティビティになります。
さらに、監査証跡は通常、簡単に変更できるシステム内に保存されません。
独自のアペンダーを作成する場合を除いて、Log4PHPに含まれているアペンダーについては、https ://logging.apache.org/log4php/docs/appenders/pdo.htmlで説明されています。
ストレージテーブルをどのように定義する必要があるかについての詳細があります。
timestamp DATETIME
logger VARCHAR
level VARCHAR
message VARCHAR
thread VARCHAR
file VARCHAR
line VARCHAR
コードが監査ログにエントリを生成する必要があると感じるときはいつでも、おそらく監査ロガーオブジェクトを取得して、それにメッセージを送信します。
Logger::get('audit')->info('Stuff happened');
これにより、データベースに必要なすべての情報を含むログメッセージが作成されます。さらに、MDC機能を使用できます。ログメッセージに追加される可能性のある永続的な情報を設定できます。MDCは「マップされた診断コンテキスト」の略で、「現在のユーザー」などの値をメッセージに追加できます。
ただし、これは、このMDC値を含めて適切なログメッセージ形式を構成した場合にのみ発生します。構成はLoggerLayoutPatternを介して行われる可能性があります。詳細については、 https: //logging.apache.org/log4php/docs/layouts/pattern.htmlを参照してください。
結論:これまで一般的なアプリケーションのログに使用したことがない場合は、監査ログにLog4PHPを追加したくありません。これは多くの機能を備えた強力なツールですが、現在のユースケースに完全に適合させるには多くの問題があります。データベースに必要なすべての情報を含めることができるため、自分で監査ログを作成する方が簡単なようです。