1

ほとんどの本番サイトでは、エラーがいつ発生したかをできるだけ早く知りたいと考えています。私の質問は、この情報を取得する最善の方法です。

通常、エラーが発生するまで毎日座ってエラー ログを監視するわけではないため、エラーを電子メールで受け取るのがおそらく最善の方法です。異なるサーバーに 20 以上の運用サイトがあるため、これは不可能です。これらのエラーは、未設定の変数、無効なデータの受信、クエリ エラーなど、あらゆるものである可能性があります。

現時点では、ここにある PHP の Web サイトの例に従っています。その結果、電子メールで送信される XML ファイルと共にテキスト文字列が作成されます。これを少し変更して、スクリプトが終了するまですべてのエラーを保持し、XML ファイルを添付して電子メールを送信します。(ループ内のエラーが原因で、500,000 件以上の電子メールを送信するいくつかのメール サーバーがクラッシュしました。) ほとんどの場合、これは完全に機能します。(すべてのエラー処理を行うオブジェクトも作成しました。)

この問題は、プロセスに大量のデータがある場合に発生しwddx_serialize_value()ます。そして、複数のエラーが発生した場合、多くの場合、スクリプトが使用できるよりも多くのメモリを実際に使用することになります。

gzcompress()このため、変数内に格納する前に XML ファイルに追加を行いました。これは役に立ちますが、データ量が非常に多い場合は、依然としてメモリ不足になります。(最近のケースでは、約 2GB を使用したいと考えていました。)

これには他にどのような解決策があるのか​​ 、それを機能させるためにこれをどのように変更したのか疑問に思っていますか?

したがって、いくつかの要件:

  • エラーメッセージ以上のものを私に送信できる必要があり、サーバーにログインして何が起こったのかを把握する必要はありません(したがって、いつモバイルであるかを確認し、緊急の問題であるかどうかを判断できます)
  • 送信されるメールの数に制限が必要です。最高はまだ1です。
  • 通常どおりファイルにログを記録する必要があります

編集:エラー文字列だけでなく、エラーに関連する他の情報が必要です。多くの場合、エラーを再現することはほとんど不可能であることがわかります。これは、より多くの情報を取得しない限り、ユーザー入力が原因であることがわかりません。有益なエラーを入力するために最善を尽くしましたが、ユーザーがシステムをどのように使用するか、またはどのようながらくたデータを入力するかはわかりません。したがって、エラーテキスト/文字列だけでは不十分です。

編集2:データベースにエラーを記録できません。データベースが存在しない可能性があることがわかっているためです。実行がほぼ保証されているものが必要です。また、ウェブサイトはすべて1つのサーバー上にあるわけではなく、サーバー上のcronにアクセスできないことがよくあります(愚かなホスティング会社)。

4

4 に答える 4

1

1 つのアプローチは、アプリケーションでの適切な例外管理、つまり、ログに記録されるエラーを制御することです。

発生した各例外は、エラーの詳細をデータベースに記録します。

次に、エラー データベースを検索するための小さなアプリケーションをコーディングできます。おそらく、すべての Web サイトに対して 1 つだけです。

そうすれば、すべてがインデックス化され、すばやく検索できるため、読み取り不能な大きなログ ファイルを回避できます。データベースが大きくなりすぎた場合、cron ジョブを使用してログ テーブルを切り捨てることができます。

于 2008-11-26T18:21:49.190 に答える
1

カスタム エラー ハンドラーを設定する代わりに、エラーを通常どおりエラー ログに記録します。定期的に実行され、エラー ログの変更を監視する cron をセットアップしました。変更された場合は、変更のみが記載されたメールが送信されます。このプロセスを改善し、ニーズに合わせて変更を解析できます。たとえば、特定のレベル (E_WARNING 以上など) を超えるエラーのみを送信することができます。

于 2008-11-26T18:14:52.777 に答える
0

エラー ログ* とエラー ログ ファイルへの変更を電子メールで送信する cron ジョブである Anacron で十分です。cron ジョブは、電子メールを送信する前に必要なすべての処理を実行できます。

于 2008-11-26T22:56:53.487 に答える
0

私が過去に使用したことの 1 つは、 epylog です。これは、Python で記述された非常に柔軟なログ監視アプリです。エラー ログを監視し、電子メールで送信されるログ サマリーにエラー (またはその一部) を含めるように設定できます。

より詳細なエラー データをサーバー上のフラット ファイルに保存し、ログを確認するように電子メールで送信する方法に傾倒します。エラー ディレクトリまたはファイルの変更を監視し、レート制限が設定されている cron ジョブは、実行中のアプリケーションへの影響を最小限に抑えるのに適した方法です。

于 2008-11-26T23:14:27.867 に答える