web-dev-qa-db-ja.com

エラーログにはどのような情報を記録する必要がありますか?

エラーが発生した場合に、エラーログに役立つ情報を入力したいと思います。ログを使用して、自分のサイトのバグを見つけて修正できるようにしたいが、ハッキングの試みをログに記録したい。 PHP Webアプリの場合、どの情報が重要であると考えられますか、またその理由は何ですか?どのような情報が役に立ちますか?やり過ぎとは何ですか?

私の現在のリストは:

  • エラーのタイプ。
  • 対応するエラーメッセージ。
  • エラーが発生したURL。
  • タイムスタンプ。
  • ユーザーのIPおよびユーザーエージェント。
  • 参照URL。
10
VirtuosiMedia

通常、記録する量はエラーの種類によって異なります。重要度が高いほど、ログに記録します。

ログに記録したい他のものに関して

  • エラーの原因となったファイルのファイル名は、行番号とともにリストの上位になります。
  • エラーがスローされた例外の結果であった場合のスタックトレース情報。

エラーが発生したときに、それが役立つ限り、ログに記録する量を過剰に増やすことはできないと思います。ログが本当に悪くなるのを目にしたのは、エラーが発生していなくても大量のログが取得されているときだけです。

OWASP Webサイト-エラー処理とロギング で詳細を確認できます。

4
Mark Davidson

例外シールド パターンを使用しています。

まず第一に:アプリケーションは、(開発者として)必要なすべての情報をデータベース、ファイルに記録します...

2番目:アプリケーションは、機密の内部情報を含まないメッセージをクライアントに返します。

アプリケーションが収集できる個人情報(シールド):

  • クライアント環境変数(url、ip、language ...)
  • エラーの場所:スタック
  • 私のビジネス変数(カスタムエラー処理)

私は 未処理の例外とカスタム処理 を分離することにし、すべてのタイプの例外のロギングテンプレートを持っています

3
garik

マークとイゴールは良い提案をしています。エラー処理とロギングについてOWASPを読むこともお勧めします。

もう1つ、ログを記録する場合は必ず、URLリファラー、get/post変数、ユーザー名など、ユーザーからのログ情報を無害化するようにしてください。つまり、リモートユーザーが操作できるすべてのものです。おそらく、100,000文字の長さのユーザー名をログに記録する必要はないでしょう。

1

あなたが言及したことに加えて、私はPOST値($ _POST)と、可能であればCookie /セッションデータを含めようとします。

1
Olivier Lalonde